STM32代码思路
新建工程
①配置好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是否处于低电平,低则+
更多推荐



所有评论(0)