STM32使用TIM閃爍LED——輸出比較方式

來源:互聯網
上載者:User

標籤:輕鬆   c_str   計數   呼吸燈   cmd   ocm   output   load   clock   

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,待續

STM32使用TIM閃爍LED——輸出比較方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.