• STM8的C语言编程(7)--16位定时器的中断应用


    STM8C语言编程(7)--16位定时器的中断应用

     

    STM8中,除了有8位的定时器外,还有16位的定时器。今天进行的实验就是针对16位定时器2来进行的。除了计数单元为16位的,其它设置与前面8位的定时器基本一样。下面的程序也是采样中断方式,由定时器2的中断服务程序来驱动LED的闪烁。

    具体的程序代码如下,其它注意点见上一篇,另外要注意别忘了修改相应的中断向量。

     

    //  程序描述:通过初始化定时器2,以中断方式驱动LED闪烁

    //            LED接在MCUGPIOPD3

     

    #include "STM8S207C_S.h"

     

    main()

    {

      // 首先初始化GPIO

      PD_DDR = 0x08;

      PD_CR1 = 0x08;              // PD3设置成推挽输出

      PD_CR2 = 0x00;

     

      // 然后初始化定时器4                              

      TIM2_IER = 0x00;            // 禁止中断

      TIM2_EGR = 0x01;            // 允许产生更新事件

      TIM2_PSCR = 0x01;           // 计数器时钟=主时钟/128=2MHZ/2

                                                                // 相当于计数器周期为1uS

                                                                                                                                                          // 设定重装载时的寄存器值

                                                                                                                                                          // 注意必须保证先写入高8位,再写入低8

                  TIM2_ARRH = 0xEA;           // 设定重装载时的寄存器的高8

      TIM2_ARRL = 0x60; 

     

      TIM2_CNTRH = 0xEA;          // 设定计数器的初值

      TIM2_CNTRL = 0x60;            

                                  // 定时周期=1*60000=60000uS=60ms

                                 

      TIM2_CR1 = 0x01;            // b0 = 1,允许计数器工作

                                  // b1 = 0,允许更新

                                  // 设置控制器,启动定时器

      TIM2_IER = 0x01;            // 允许更新中断

      _asm("rim");                // 允许CPU全局中断

     

      while(1)                    // 进入无限循环

      {

      }                             

    }

     

    // 函数功能:定时器4的更新中断服务程序

    // 输入参数:无

    // 输出参数:无

    // 值:无

    @far @interrupt void TIM2_UPD_IRQHandler (void)

    {

        TIM2_SR1 = 0x00;          // 清除更新标志

        PD_ODR = PD_ODR ^ 0x08;   // LED驱动信号取反

                                  //LED闪烁频率=2MHZ/2/60000/2=8.3

    }                                         

     

  • 相关阅读:
    力扣第763题 划分字母区间 c++ 哈希 + 双指针 + 小小贪心
    ClickHouse(24)ClickHouse集成mongodb表引擎详细解析
    CNN详细讲解
    UDP-A-D-乙酰氨基葡萄二钠盐;UDP-ALPHA-D-N-ACETYLGLUCOSAMINE, DISODIUM SALT
    HTML做一个传统节日端午节 带设计报告4500字
    ELK-介绍及Elasticsearch集群搭建
    【2022-11-26】JS逆向之北京百姓网
    工业智能网关BL110应用之三十: 如何连接配置MQTT Client One服务器
    spring初识
    pcl--第十节 点云曲面重建
  • 原文地址:https://blog.csdn.net/Sapphire521/article/details/125477132