日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32使用TIM闪烁LED——输出比较方式

發布時間:2025/3/21 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32使用TIM闪烁LED——输出比较方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

STM32定時器輸出比較器可以直接操作對應的GPIO,在計數器值等于比較寄存器的值時,對應的GPIO可以有以下四種動作

  無動作

  激活

  取消激活

  翻轉

激活電平由輸出極性寄存器決定

將LED置于定時器輸出比較對應的GPIO上,對它的操作將非常方便,完全由硬件完成,不消耗CPU時間,無需中斷,每個定時器都對應有4個輸出比較,可以輕松實現4個LED的流水燈效果

宏定義部分如下

#define USER_TIM_PSC 36000-1 #define USER_TIM_PERIOD 1000-1 #define USER_TIM_PULSEA 0 #define USER_TIM_PULSEB 500#define USER_TIM TIM2 #define USER_TIM_RCC RCC_APB1Periph_TIM2 #define USER_TIM_RCC_CMD RCC_APB1PeriphClockCmd #define USER_TIM_GPIO GPIOA #define USER_TIM_GPIO_RCC RCC_APB2Periph_GPIOA #define USER_TIM_PINA GPIO_Pin_1 #define USER_TIM_PINB GPIO_Pin_0

定時器配置如下

TIM_TimeBaseInitTypeDef tim_timebase_struct;TIM_OCInitTypeDef tim_oc_struct;GPIO_InitTypeDef gpio_struct;GPIO_RCC_CMD(USER_TIM_GPIO_RCC, ENABLE);USER_TIM_RCC_CMD(USER_TIM_RCC, ENABLE);gpio_struct.GPIO_Mode = GPIO_Mode_AF_PP;gpio_struct.GPIO_Speed = GPIO_Speed_2MHz;gpio_struct.GPIO_Pin = USER_TIM_PINA | USER_TIM_PINB;GPIO_Init(USER_TIM_GPIO, &gpio_struct);TIM_TimeBaseStructInit(&tim_timebase_struct);tim_timebase_struct.TIM_CounterMode = TIM_CounterMode_Up;tim_timebase_struct.TIM_Prescaler = USER_TIM_PSC;tim_timebase_struct.TIM_Period = USER_TIM_PERIOD;tim_timebase_struct.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseInit(USER_TIM, &tim_timebase_struct);TIM_OCStructInit(&tim_oc_struct);tim_oc_struct.TIM_OCMode = TIM_OCMode_Active;tim_oc_struct.TIM_OCPolarity = TIM_OCPolarity_Low;tim_oc_struct.TIM_OutputState = TIM_OutputState_Enable;tim_oc_struct.TIM_Pulse = USER_TIM_PULSEA;TIM_OC2Init(USER_TIM, &tim_oc_struct);tim_oc_struct.TIM_Pulse = USER_TIM_PULSEB;TIM_OC1Init(USER_TIM, &tim_oc_struct);TIM_OC2PreloadConfig(USER_TIM, TIM_OCPreload_Disable);TIM_OC1PreloadConfig(USER_TIM, TIM_OCPreload_Disable);TIM_ARRPreloadConfig(USER_TIM, ENABLE);TIM_Cmd(USER_TIM, ENABLE);

本工程使用的野火MINI開發板只有兩個LED燈且都不在定時器的輸出比較對應GPIO上,所以本工程使用了TIM2的CH1和CH2實現兩個LED的流水燈效果,一次流水完為1秒,通過杜邦線將輸出引到LED,可以觀察到效果

定時器的輸出比較功能對GPIO的激活和取消激活功能的應用場景不知道是怎樣的,因為只要第一次激活或者取消激活,后續它的狀態將保持,所以在這里用于操作LED是不方便的,但是確實可以觀察到明顯的一次流水效果。它們的功能有待后續發掘

在實現了單個LED的閃爍,多個LED的流水燈效果,還可以用定時器的PWM模式實現呼吸燈效果,玩轉LED,待續

轉載于:https://www.cnblogs.com/qingkai/p/9779685.html

總結

以上是生活随笔為你收集整理的STM32使用TIM闪烁LED——输出比较方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。