STM32F103VET6基于STM32CubeMX创建定时器中断控制LED闪烁

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F103VET6基于STM32CubeMX创建定时器中断控制LED闪烁相关的知识,希望对你有一定的参考价值。

STM32F103VET6基于STM32CubeMX创建定时器中断控制LED闪烁


  • 🌼STM32CubeMX配置界面演示

⚡需求是通过定时器1来控制LED灯1s亮灭。

  • 📌工程分为两部分组成:STM32CubeMX创建并配置工程和业务代码完善

🍁STM32CubeMX创建并配置工程

1.🌿 配置时钟,选择外部8MHz晶振,通过倍频以及锁相环,最终配到APB1 和APB2 定时器时钟线上的频率为72MHz。

2. 🌿配置定时时间参数(定时周期 = (Prescaler + 1) × (Period + 1) ÷ 时钟频率 单位:秒)

3. 🌿开启定时器中断使能选项

4. 🌿在中断优先级分组中配置(配置4位抢占优先级,0位响应优先级)

可以根据需求自定义配置优先级。


  1. 🌿配置一个串口1,用于调试信息输出。

📝业务代码完善

  1. 🔨开启定时器计数。

📑在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 */
  1. 🔧重写定时器中断回调函数内容。
/* 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 */
  1. 📜补充串口printf调试输出代码。

📈在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

以上是关于STM32F103VET6基于STM32CubeMX创建定时器中断控制LED闪烁的主要内容,如果未能解决你的问题,请参考以下文章

STM32F103VET6基于STM32CubeMX创建EXTI外部中断工程

STM32F103VET6基于STM32CubeMX RTC时钟秒更新中断使用示例

STM32F103VET6基于STM32CubeMX 配置非DMA方式获取内部温度

STM32F103VET6基于STM32CubeMX 配置硬件I2C驱动ssd1306 OLED屏幕

STM32F103VET6基于STM32CubeMX RTC时钟使用示例

STM32F103VET6基于STM32CubeMX 配置DMA方式获取内部温度