新建工程

①配置好Start、Library、User文件

②将Start、Library、User文件copy到文件夹里

③工程文件管理(三个箱子)→新建3个组→分别将Start(md.s和其他.c.h文件)、Library、 User文件添加进去

④魔术棒→C/C++→include path→添加三个文件路径

⑤Define写上USE_STDPERIPH_DRIVER (STD:标准、PERIPH:外设、DRIVER:驱动)

⑥Debug→Use→选择设备类型(STLINK或DAP)→Setting→Flash Download→勾选Reset and Run

配置GPIO时钟

①开启GPIOC端口时钟,

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

②配置GPIO工作模式

GPIO_InitTypeDef GPIO_InitStructure;//创建结构体变量,名为GPIO_InitStructure,这个结构体用是来存放GPIO配置的参数

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出模式

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;//选择使用引脚为13号引脚

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//配置输出速度

GPIO_Init(GPIOC, &GPIO_InitStructure);//将GPIO_InitStructure中填好的配置,写入到 GPIOC中

GPIO输出

LED闪烁

①使用RCC开启GPIO的时钟

②使用GPIO_Init初始化GPIO

③使用输出/输入函数控制GPIO口

④while

{

置位

Delay

复位

Delay

}

LED流水灯

①使用RCC开启GPIO的时钟

②使用GPIO_Init初始化GPIO

③使用输出/输入函数控制GPIO口

④while

{

使用GPIO_Write设置(16位)

Delay

}

蜂鸣器

①使用RCC开启GPIO的时钟

②使用GPIO_Init初始化GPIO

③使用输出/输入函数控制GPIO口

While

{

置位

复位

置位

复位

}

GPIO输入

按键控制LED点亮

新建文件夹Hardware(硬件)并添加

新建文件夹Key.c/h LED.c/h 路径手动添加到xxx\Hardware

Key.c

上拉输入模式

返回值KeyNumber

LED.c

推挽输出

定义

LED1/2_Turn

Main.c

定义函数KeyNum=KeyNumber

判断KeyNum的值,输出

光敏电阻控制蜂鸣器

手动添加Buzzer、LightSensor,路径到xxx\Hardware

Buzzer.c

推挽输出

Buzzer_ON/OFF

Buzzer_Turn(读取输出)

Light_Sensor.c

上拉输入

LightSensor_Get(读取输入

Main

If判断状态

ECTI外部中断

红外传感器计次

红外:

①RCC开启时钟:GPIOB、AFIO(EXTI和NVIC默认已打开)

②配置GPIO:上拉输入(模式不知道怎么选择可以查看GPIO推荐配置表)

③配置AFIO,选择使用的GPIO口,连接到EXTI:

④配置EXTI,选择边沿触发方式(上下升或双边),触发响应方式(中断响应/事件响应)

⑤配置NVIC,选择合适的优先级

⑥定义CountSensor_Count记录次数

CountSensor_Get,return次数

⑥中断函数 EXTI15_10_IRQHandler,每次中断,次数+1

旋转编码器计次

编码器加减

当A处于下降沿的时候,检查B是否处于低电平,低则-

当B处于下降沿的时候,检查A是否处于低电平,低则+

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐