
⚡需求是通过定时器1来控制LED灯1s亮灭。
1.🌿 配置时钟,选择外部8MHz晶振,通过倍频以及锁相环,最终配到APB1 和APB2 定时器时钟线上的频率为72MHz。

2. 🌿配置定时时间参数(定时周期 = (Prescaler + 1) × (Period + 1) ÷ 时钟频率 单位:秒)
3. 🌿开启定时器中断使能选项

4. 🌿在中断优先级分组中配置(配置4位抢占优先级,0位响应优先级)
可以根据需求自定义配置优先级。



📑在main主函数中添加如下代码,用来开启定时器计数。
/* USER CODE BEGIN 2 */__HAL_TIM_CLEAR_FLAG(&htim1, TIM_FLAG_UPDATE);//启用前清除TIM中断标志位__HAL_TIM_CLEAR_IT(&htim1, TIM_IT_UPDATE);//启用前清除TIM中断HAL_TIM_Base_Start_IT(&htim1);//开启TIM计数/* USER CODE END 2 */
/* USER CODE BEGIN 0 *///TIM定时返回函数
void HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef *htim)//回调函数
{if(htim->Instance == TIM1)//判断进入回调函数方式{printf("stm32f103");//测试USART打印函数HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5);//LED端口反转 }
}/* USER CODE END 0 */
📈在usart.c中补充printf重映射,并且在
target选项中勾选Use Micro LIB选项。在使用printf函数的地方包含stdio.h头文件。
/* USER CODE BEGIN 1 */
#include "stdio.h"
/*可调用printf*/
int fputc(int ch,FILE *f)
{/*&huart1指的是串口1,如果用别的串口就修改数字*/HAL_UART_Transmit(&huart1 , (uint8_t *)&ch , 1 , 0xffff);return ch;
}/* USER CODE END 1 */
链接:https://pan.baidu.com/s/1Lki8Bu_d94h_XWMimx_2Ag
提取码:q3d5