单片机
返回首页

stm8l TIM2定时器使用

2021-10-20 来源:eefocus

1、配置定时器
void TIM2_Config(void)
{
    TIM2_DeInit();
    CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE); 
    TIM2_TimeBaseInit(TIM2_Prescaler_1, TIM2_CounterMode_Up, 128);
    TIM2_SetCounter(128);                                
    TIM2_ITConfig(TIM2_IT_Update, ENABLE);
    TIM2_ARRPreloadConfig(ENABLE);
    TIM2_Cmd(ENABLE);                                     //计数器使能,开始计数  
}

2、配置系统时钟CLK
void CLK_Config(void)
{   
    CLK_DeInit();
    
    CLK_HSEConfig(CLK_HSE_OFF);
    //启动LSI时钟源
    CLK_LSICmd(ENABLE); 
    //使能时钟切换
    CLK_SYSCLKSourceSwitchCmd(ENABLE);
    //选择内部低速时钟作为时钟源
    CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);
    //设置系统时钟分频
    CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
    //等待时钟稳定
    while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_LSI)
    {}
}

3、系统初始化配置
void SYSTEM_Config(void)
{   
    /* 关全局中断 */
    disableInterrupts();
    
    /* 时钟配置 */
    CLK_Config();

    /* TIM2配置 */
    TIM2_Config();

    /* 使能中断 */
    enableInterrupts(); 
}

3、main函数
void main(void)
{   
    SYSTEM_Config();
    
    while (1)
    {     
         ;
    }
}

5、中断处理
/**
  * @brief TIM2 Update/Overflow/Trigger/Break /USART2 TX Interrupt routine.
  * @param  None
  * @retval None
  */
INTERRUPT_HANDLER(TIM2_UPD_OVF_TRG_BRK_USART2_TX_IRQHandler,19)
{
    /* In order to detect unexpected events during development,
       it is recommended to set a breakpoint on the following instruction.
    */

    TIM2_ClearFlag(TIM2_FLAG_Update);
    g_uiTim2Count++;
}

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 开关电源的基本组成及工作原理

  • 用NE555制作定时器

    相关电子头条文章