使用定时器2让黄灯闪烁
核心代码
man.c
HAL_TIM_Base_Start_IT(&htim1);//以中断的方式打开定时器1,定时器开始工作计数,当时间到达500ms后,执行中断回调函数
HAL_TIM_Base_Start_IT(&htim2);//以中断的方式打开定时器2,定时器开始工作计数,当时间到达1000ms后,执行中断回调函数
gpio.c
static int flag = 0;//标志LED灯的状态
//每隔500ms和1000ms调用中断回调函数,时间到了就会执行该中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{ //判断是否是定时器1if(htim == &htim1){//执行LED灯(绿灯)闪烁的代码 if(flag == 0){
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);flag = 1;}else if(flag == 1){
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);flag = 0;}}else if(htim == &htim2){//执行LED灯(黄灯)闪烁的代码 if(flag == 0){
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_RESET);flag = 1;}else if(flag == 1){
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_SET);flag = 0;}}
}
现象展示:
FreeRTOS作业day1
1.总结keil5下载代码和编译代码需要注意的事项
(1)、编写的代码需要放在CODE BEGIN和CODE END之间,否则重新生成代码会被覆盖。
(2)、下载代码前必须先编译查找错误,并且在魔法棒中的Flash下的Reset and Run勾选上,下载完代码让代码立刻运行,将pack中的Enable取消勾选
2.总结STM32Cubemx的使用方法和需要注意的事项
(1)、先选择芯片型号
(2)、在SYS中,勾选Debug,否则,只能下载一次代码,后续代码都不能下载,单片机锁死
(3)、RCC在配置时钟时,将时钟大小设置为48MHZ
(4)、在Project Manager下的Project中:编译器选择MDK-ARM
(5)、在Project Manager下的Code Generator中:勾选为模块生成独立的.c和.h文件
3.总结STM32Cubemx配置GPIO的方法
(1)、将GPIO设置为输出引脚,左键选择GPIO_Output
(2)、在GPIO设置中,先将GPIO output设置为高电平
定时器配置:
(1)、在Timers中选择一个定时器,将定时器的cloc Source设置为intermal Clock,修改预分频系数和重装载值,最后勾选NVIC Settings下的第一个Enabled