资料介绍
【STM8教程】8位定时器应用之二
STM8的C语言编程(6)--8位定时器应用之二
今天进行的实验依然是用定时器4,只不过改成了用中断方式来实现,由定时器4的中断
服务程序来驱动LED的闪烁。
实现中断方式的关键点有几个,第一个关键点就是要打开定时器4的中断允许位,在定时
器4的IER寄存器中有定义。第二个关键点,就是打开CPU的全局中断允许位,在汇编语言
中,就是执行RIM指令,在C语言中,用下列语句实现:
_asm("rim");
第3个关键点就是中断服务程序的框架或写法,中断服务程序的写法如下:
@far @interrupt void TIM4_UPD_OVF_IRQHandler (void)
{
// 下面是中断服务程序的实体
}
第4个关键点就是要设置中断向量,即将中断服务程序的入口填写到中断向量表中,如下
所示,将IRQ23对应的中断服务程序的入口填写成TIM4_UPD_OVF_IRQHandler
struct interrupt_vector const _vectab[] = {
{0x82, (interrupt_handler_t)_stext}, /* reset */
{0x82, NonHandledInterrupt}, /* trap */
{0x82, NonHandledInterrupt}, /* irq0 */
{0x82, NonHandledInterrupt}, /* irq1 */
{0x82, NonHandledInterrupt}, /* irq2 */
{0x82, NonHandledInterrupt}, /* irq3 */
{0x82, NonHandledInterrupt},