实验结果
下载程序后,可以看到连接在PG0口的 LED 闪烁,闪烁的频率是1S。
知识要点及提问:
1. 这个程序程序中我们增加了#include <sys\exception.h>这个头文件,当程序中使用到了中断的话,必须要把这个头文件包含进来。
2.*pTIMER0_WIDTH = 0xaaaa;
在仅仅是内部定时时,这个配置其实没有什么作用,它是在当需要使用timer0本身的TMR0接口输出的时候,这需要按照自己要求去配置。
2. *pTIMER0_PERIOD = timer_num*100; //定时的时间是timer_num uS
前面我们讲过,定时器使用的内部的时钟源是系统时钟,在主函数中:
Set_PLL(16,4); //内核时钟:25MHz*16=400MHz,系统时钟:400MHz/4=100MHz
配置的系统时钟是100M,也就是1/100000000 S ,100正好是1uS,当然我们还可以把这个基准值减小,比如50,就是0.5uS,它最大定时是0xffffffff/100000000 S,约等于42.95S
4. 从*pSIC_IAR2寄存器中可以查到Timer0配置在12~15位,设定Timer0的中断等级是11,所以配置如下:
*pSIC_IAR2 &=~0x0f000; *pSIC_IAR2 |=0x04000;中断等级值越小,优先级越高。
5. *pTIMER0_CONFIG = 0x0059; 配置成PWM模式,TMR0脚不输出,具体可以查看寄存器每一位代表的意思来配置。