队友是什么意思| 沙棘原浆有什么作用| hb是什么意思医学| 五险都有什么险| 1978年出生是什么命| 吃什么能增强免疫力| 检查肾功能挂什么科| 什么的天空填合适的词| 补钙吃什么食物| 人老放屁是什么原因| 智齿发炎肿痛吃什么药| 女装大佬什么意思| vlone是什么牌子| kj是什么单位| 五行缺水是什么意思| 叶酸不能和什么一起吃| 4.28是什么星座| 对什么有好处的英文| 生完孩子可以吃什么水果| 字什么意思| 大便隐血阴性是什么意思| 摩羯座哭了代表什么| 肺气肿吃什么药| 229什么星座| 七个星期五什么档次| 鼠冲什么生肖| 假卵是什么样子的| 卵巢早衰吃什么药最好| 狗头军师什么意思| 道和集团是干什么的| 双子女和什么座最配对| 头发出汗多是什么原因| 头孢不能和什么食物一起吃| 十二月六号是什么星座| mrna是什么| 心脏支架是什么材料做的| 作奸犯科是什么意思| 性激素六项查什么| 眼袋大是什么原因引起的| 肛痈是什么病| 众星捧月是什么意思| 手腕发麻是什么原因| 天蝎座喜欢什么样的女生| 化验血能查出什么项目| 什么原因引起甲亢| 儿童遗尿挂什么科| 种马是什么意思| 人走茶凉下一句是什么| 牙周炎挂什么科| 津津有味的意思是什么| 梦到头上长虱子什么意思| 什么的小花| poem是什么意思| 兄长是什么意思| 味淋是什么东西| 尿血是什么原因| 晚上吃什么水果减肥效果最好| 6月26什么星座| 白咖啡是什么| 血压偏低有什么危害| 大便次数少是什么原因| 椰子水有什么功效| 4月5号是什么星座| 尿毒症是什么症状| 为什么第一次没有出血| 基因突变是什么意思| 孙楠留什么给你| 100mg是什么意思| 十一是什么意思| 是什么样的感觉我不懂是什么歌| 心情烦躁吃什么药| 羽毛球拍什么牌子好| 眼底充血用什么眼药水| 急性青光眼是什么症状| 杨梅什么时候成熟| 心电图低电压什么意思| 嗷呜是什么意思| 素颜霜是什么| ecom什么意思| 骡子是什么意思| 睡醒口干口苦是什么原因| 翡翠属于什么玉| 卵巢是什么| ems代表什么| 奥特莱斯是什么店| 荆轲姓什么| zara中文叫什么| 酸化是什么意思| 上海为什么被称为魔都| 粒字五行属什么| 脾脏结节一般是什么病| 公务员国考和省考有什么区别| 胃炎吃什么药效果最好| 什么是公历年份| 牙龈出血是什么病的前兆| 幼儿急疹为什么不能碰水| 晚上咳嗽什么原因| 额头长痘痘是什么原因| 酷盖是什么意思| 副检察长什么级别| 爽肤水是什么| 过氧化氢浓度阳性是什么意思| 提手旁有什么字| 心气不足是什么意思| 减肥晚餐适合吃什么| ntl是什么意思| 军官是什么意思| lotus是什么意思| 右肺中叶少许纤维灶是什么意思| pvs是什么意思| 胰腺吃什么药| 丙氨酸氨基转移酶是查什么的| 性欲是什么| 献血前需要注意什么| 自信是什么意思| 月经推迟半个月是什么原因| 家里进黄鼠狼是什么预兆| 缺钾吃什么食物补得最快| 秋水长天什么意思| 梦到自己长白头发是什么意思| 什么人需要做心脏造影| 尿液白细胞高是什么原因| 弥漫性肝病是什么意思| 泡饭为什么对胃不好| 男性hpv挂什么科| 脱臼是什么感觉| 自相矛盾的道理是什么| 朱元璋为什么要杀刘伯温| 穿刺活检能查出肿瘤是什么性质吗| 水瓶座的幸运色是什么| 佩戴狼牙有什么好处| 掉头发吃什么药最有效| 用牙膏洗脸有什么好处和坏处| 胃胀不舒服吃什么药| 孔子是什么家| 月季什么时候开花| 吃粥配什么菜| 恨不相逢未嫁时什么意思| 芽原基发育成什么| 为什么人会打喷嚏| 什么样的山峰| 脑疝是什么意思| 芹菜不能和什么食物一起吃| 梦见自己会开车了是什么意思| 医技是什么专业| 做nt需要准备什么| 三月二十三是什么星座| 青蒿素是什么| 中耳炎吃什么药最有效| 什么是亚麻籽| 吃止疼药有什么副作用| 亚硝酸盐阴性是什么意思| ia是什么意思| 后续是什么意思| 天天喝白酒对身体有什么危害| 安逸是什么意思| 大黄是什么药材| 五月三十一号是什么星座| 六一送女孩子什么礼物| 风寒感冒和风热感冒有什么区别| 结扎什么意思| 渗析是什么意思| 肠鸣吃什么药| 沙特是什么教派| 什么而不舍| 白脸代表什么| 什么叫有氧运动| 亲子鉴定挂什么科| 雏菊的花语是什么| 肾阴阳两虚用什么药| 1973年属牛的是什么命| 93年属鸡的是什么命| 为什么小脑会萎缩| 人体缺钙吃什么补最快| 内热是什么原因引起的怎么调理| 友谊是什么意思| 蚂蚁长什么样子| 巨蟹座和什么座最配对| 疣体是什么| 微信头像 用什么好| 顺铂是什么药| 乙型肝炎核心抗体阳性是什么意思| 中线是什么意思| 相伴是什么意思| 退位让贤是什么意思| 周长是什么意思| 柠檬泡蜂蜜有什么功效| 载脂蛋白b高是什么原因| 痰多吃什么药好| 风湿性心脏病是什么原因引起的| 备孕为什么要吃叶酸| 洗衣机什么牌子的好| px是什么| 前列腺液是什么| 每天吃维生素c有什么好处| 腋臭去医院挂什么科| 63岁属什么生肖| 胸腔积液吃什么药最有效| 菠萝蜜不能跟什么一起吃| 系带割掉了有什么影响| sars是什么病毒| 糖尿病人可以吃什么| 正常的月经是什么颜色| 肝功能2项是指什么| 疱疹用什么药可以根治| 辛巳五行属什么| 喝咖啡不能吃什么食物| 为什么喜欢春天| cems是什么意思| 南京鸡鸣寺求什么灵| 脾门区结节是什么意思| 6月22日是什么星座| 线人是什么意思| 胰腺炎可以吃什么| 叶什么什么龙| 红细胞偏低是什么原因| 什么呀| 手机服务密码是什么| 内蒙有什么特产| nike是什么牌子| 25度天气穿什么衣服| 笑刑是什么| 你要干什么| 耳鸣是什么原因引起的| acl医学上是什么意思| 女性尿频吃什么药| 老鼠是什么意思| 中耳炎是什么症状| 皮下出血小红点是什么原因造成的| 洗澡用什么香皂好| 科目二学什么| 风热感冒吃什么药| 导乐分娩是什么意思| 高姓和什么姓是世仇| 苦瓜不能跟什么一起吃| 杰克琼斯属于什么档次| 梦见头发白了是什么意思| 嘴唇一圈发黑是什么原因造成的| 草莓什么季节| 2024年是什么年| 柠檬和什么一起泡减肥| hedgren是什么品牌| 虚岁30岁属什么生肖| 杨梅有什么好处| qy是什么意思| 缓释是什么意思| 梦见买白菜是什么意思| 维生素b5又叫什么| 牛郎是什么职业| 跪舔是什么意思| 掉头发缺什么维生素| 地中海贫血是什么原因引起的| 全身发麻是什么原因引起的| 靶向药有什么副作用| 肚子胀挂什么科| 手掌麻是什么原因引起的| 梦见杀人了是什么意思| 腰痛贴什么膏药最好| 脑梗长期吃什么药好| 拉肚子拉水是什么原因| 牛和什么属相最配| 银925是什么意思| 五台山是什么菩萨的道场| 氨基酸什么牌子好| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? DIY与开源设计 ? 电子DIY ? 【功率监测与控制系统DIY活动过程贴】LED的定时器中断控制LED闪烁

共2条 1/1 1 跳转至

【功率监测与控制系统DIY活动过程贴】LED的定时器中断控制LED闪烁

助工
2025-08-04 16:39:49     打赏
百度 如果您只是想要一个逍遥的外观,那就另当别论了。

【功率监测与控制系统DIY活动过程贴】LED的定时器中断控制

本文介绍了基于 NUCLEO-F411RE 开发板并使用 SMT32CubeMX 软件快速生成工程,实现了通过定时器精确定时 300 毫秒的 GPIO 电平翻转以及 LED 闪烁项目。

LED闪烁

介绍了使用定时器实现 300ms 翻转板载 LED 的开发流程。

原理

介绍了实现 LED 闪烁和 GPIO 电平翻转所需的定时器和中断的基本原理。

interrupt.jpg

该项目的设计思路为通过定时器精确定时 300 毫秒,当到达计时时刻,进入中断并执行 LED 对应的 GPIO 电平翻转指令,进而实现精确闪灯。

定时器

定时器的基本功能是定时,设定目标时间,系统会在设定的时刻执行相应的任务。

定时器的使用涉及到三个重要概念

分频:例如分针对于秒针的分频为60;

计数:例如秒针转动 10 格的时长为 10 秒,对于定时器的计数,频率越高增长速度越快;

重载:时针在表盘最多记12小时,如果继续增加,则回到0;当定时器中的计数值达到重载值时,计数值就会被清零。

NVIC

STM32 专门用于处理中断的控制器为嵌套向量中断控制器 (Nested Vectored Interrupt Controller, NVIC);

NVIC 支持 中断优先级 和 中断嵌套 功能,

中断优先级即给不同的中断划分不同的响应等级,如果多个中断同时产生,则STM32优先处理高优先级的中断;

中断嵌套即允许在处理中断时,如果有更高优先级的中断产生,则挂起当前中断,先去处理产生的高优先级中断,处理完后再恢复到原来的中断继续处理。

方案

打开 STM32CubeMX 软件,新建ST板卡工程;

时钟配置

默认系统时钟频率为 84MHz

clock_default.jpg

定时器配置

pinout_config.jpg

时钟分频计算方法

T = (psc+1)(arr+1)/Tclk = (50399+1)(499+1)/84MHz = 300ms

其中

PSC 为定时器预分频系数 prescaler 取值范围 [0, 65535]

arr 为自动重装载值 Counter Period (AutoReload Register) 取值范围 [0, 65535]

Tclk 为系统时钟频率 System Clock,这里为 84MHz

进入 NVIC Settings 标签,使能定时器中断

配置完成后,进入 Project Manager 标签栏,进行项目命名、保存路径设置、编译器选择等操作;

点击 Generate Code 按钮,使用 STM32CubeIDE 或 Keil 打开目标工程;

编译工程,0 error, 0 warning .

代码

在进入主函数前,需调用定时器回调函数,并在其中加入中断执行代码,即 LED 闪烁 (GPIO 电平翻转)

/**
  * @brief          Timer period Callback
  * @param[in]      htim - pointer
  * @retval         none
  */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if(htim == &htim3)
    {
      //300ms trigger
      HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    }
}

进入主函数,需要使能定时器中断服务

// ----- HAL_TIM_Base_Start(&htim3) ---------
HAL_TIM_Base_Start_IT(&htim3);

完整 main.c 代码

/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "tim.h"
#include "usart.h"
#include "gpio.h"

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

/**
  * @brief          Timer period Callback
  * @param[in]      htim - pointer
  * @retval         none
  */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if(htim == &htim3)
    {
      //300ms trigger
      HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    }
}

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM3_Init();
  MX_USART2_UART_Init();
  /* USER CODE BEGIN 2 */
  HAL_TIM_Base_Start_IT(&htim3); // -- HAL_TIM_Base_Start(&htim3);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

/**
  * @brief System Clock Configuration
  * @retval None
  */
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  /** Configure the main internal regulator output voltage
  */
  __HAL_RCC_PWR_CLK_ENABLE();
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

  /** Initializes the RCC Oscillators according to the specified parameters
  * in the RCC_OscInitTypeDef structure.
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
  RCC_OscInitStruct.PLL.PLLM = 16;
  RCC_OscInitStruct.PLL.PLLN = 336;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
  RCC_OscInitStruct.PLL.PLLQ = 4;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }

  /** Initializes the CPU, AHB and APB buses clocks*/
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  {
    Error_Handler();
  }
}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */
  __disable_irq();
  while (1)
  {
  }
  /* USER CODE END Error_Handler_Debug */
}

#ifdef  USE_FULL_ASSERT

void assert_failed(uint8_t *file, uint32_t line)
{
}
#endif /* USE_FULL_ASSERT */

★ 注意用户自定义代码需写入 /* USER CODE BEGIN x */ 和 /* USER CODE END x */ 之间,确保CubeMX再次生成工程,代码不会被覆盖。

保存代码,重新编译工程,调试或运行程序,将固件上传至 NUCLEO-F411RE 开发板,程序运行,板载 LED 按照定时器周期准确闪烁。

参考:stm32cubemx 定时器定时器闪烁LED .

效果

板载 LED 按照 300 毫秒的周期准确闪烁

blink_Timer.gif

总结

该项目结合 SMT32CubeMX 软件快速生成工程,实现了通过定时器精确定时 300 毫秒的 GPIO 电平翻转以及 LED 闪烁项目,为定时器相关的应用设计提供了参考。





关键词: 活动     定时器     中断     LED     STM32    

专家
2025-08-04 20:13:35     打赏
2楼

感谢分享


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
三百年前是什么朝代 慢性胃炎吃什么食物好 7月22号是什么星座 阿迪达斯和三叶草有什么区别 胰腺的作用和功能是什么
女大一抱金鸡是什么意思 九月23日是什么星座 北宋六贼为什么没高俅 遁形是什么意思 梦见大老鼠是什么意思
嘴紫是什么原因 胃寒吃什么 阴道炎有些什么症状 男人更年期吃什么药 2024年是什么年
看破不说破什么意思 花椒桂圆艾绒敷肚脐有什么作用 反应性增生是什么意思 滴水不漏是什么生肖 什么叫姑息治疗
夏天适合种植什么蔬菜hcv9jop4ns1r.cn 经期血量少是什么原因hcv7jop5ns2r.cn cdc是什么意思hcv8jop7ns6r.cn 长时间手淫有什么危害hcv9jop5ns1r.cn 风湿性心脏病吃什么药hcv8jop2ns5r.cn
什么的太阳hcv8jop0ns9r.cn 胃疼需要做什么检查hcv9jop1ns3r.cn 万里晴空什么意思hcv8jop3ns1r.cn 亲戚是什么意思hcv7jop9ns2r.cn 右下眼皮跳是什么原因hcv8jop7ns3r.cn
头晕目眩挂什么科96micro.com 什么是百慕大三角creativexi.com 颜艺是什么意思hcv8jop2ns2r.cn 头皮痒挂什么科dayuxmw.com bigbang什么意思hcv7jop9ns2r.cn
腰椎滑脱是什么意思jingluanji.com 喝咖啡对身体有什么好处xinmaowt.com 什么是肝癌hcv8jop9ns2r.cn 性生活过多有什么危害hcv7jop9ns3r.cn 月经不能吃什么水果hcv8jop3ns6r.cn
百度