《STM8的C语言编程(7)--16位定时器的中断应用.pdf》由会员分享,可在线阅读,更多相关《STM8的C语言编程(7)--16位定时器的中断应用.pdf(2页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、STM8 的 C 语言编程(7)16 位定时器的中断应用在 STM8 中,除了有 8 位的定时器外,还有16 位的定时器。今天进行的实验就是针对 16 位定时器 2 来进行的。除了计数单元为16 位的,其它设置与前面8位的定时器基本一样。下面的程序也是采样中断方式,由定时器 2 的中断服务程序来驱动 LED 的闪烁。具体的程序代码如下,其它注意点见上一篇,另外要注意别忘了修改相应的中断向量。/程序描述:通过初始化定时器2,以中断方式驱动LED 闪烁/LED 接在 MCU 的 GPIO 的 PD3 上#include STM8S207C_S.h main()/首先初始化 GPIO PD_DDR=
2、0 x08;PD_CR1=0 x08;/将 PD3 设置成推挽输出PD_CR2=0 x00;/然后初始化定时器4 TIM2_IER=0 x00;/禁止中断TIM2_EGR=0 x01;/允许产生更新事件TIM2_PSCR=0 x01;/计数器时钟=主时钟/128=2MHZ/2/相当于计数器周期为1uS/设定重装载时的寄存器值/注意必须保证先写入高8 位,再写入低 8 位TIM2_ARRH=0 xEA;/设定重装载时的寄存器的高8 位TIM2_ARRL=0 x60;TIM2_CNTRH=0 xEA;/设定计数器的初值TIM2_CNTRL=0 x60;/定时周期=1*60000=60000uS=60ms TIM2_CR1=0 x01;/b0=1,允许计数器工作 /b1=0,允许更新/设置控制器,启动定时器TIM2_IER=0 x01;/允许更新中断_asm(rim);/允许 CPU 全局中断while(1)/进入无限循环 /函数功能:定时器 4 的更新中断服务程序/输入参数:无/输出参数:无/返 回 值:无far interrupt void TIM2_UPD_IRQHandler(void)TIM2_SR1=0 x00;/清除更新标志PD_ODR=PD_ODR 0 x08;/LED 驱动信号取反/LED 闪烁频率=2MHZ/2/60000/2=8.3