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
实现使用定时器让黄灯闪烁
HAL_TIM_Base_Start_IT(&htim1);//以中断的方式打开定时器1,定时器开始工作计数,当时间到达500ms后,执行中断回调函数
HAL_TIM_Base_Start_IT(&htim2);//以中断的方式打开定时器2,定时器开始工作计数,当时间到达1000ms后,执行中断回调函数
static int flag = 0;//标志LED灯的状态
//每隔500ms和1000ms调用中断回调函数,时间到了就会执行该中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
//判断是否是定时器1
if(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;
}
}
}