STM32使用TIM闪烁LED——输出比较方式
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                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——输出比较方式的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: linux系统如何进行录屏
- 下一篇: js 获取 屏幕 可用高度...
