本文来自http://blog.youkuaiyun.com/hellogv/
#include "SPCE061A.H" unsigned int g_uiOutput=0,iii=0; void IRQ6(void) __attribute__ ((ISR)); void IRQ6(void) { if(*P_INT_Ctrl&C_IRQ6_TMB1)//C_IRQ6_TMB1对应于main()中的*P_INT_Ctrl_New|=XXXXXXX { if(g_uiOutput==64)//用于查看是否真的以秒为累加,64为频率数 { g_uiOutput=0; iii++; } g_uiOutput++; *P_Watchdog_Clear=0x0001; *P_INT_Clear=C_IRQ6_TMB1;//C_IRQ6_TMB1对应于main()中的*P_INT_Ctrl_New|=XXXXXXX } } main() { *P_SystemClock = 0x0080; //设置高的CPU主频,可以操作得更快 asm("INT OFF"); *P_TimeBase_Setup=C_TMB1_64Hz; //这里可以选择C_TMB1_8Hz、C_TMB1_16Hz、C_TMB1_32Hz、C_TMB1_64Hz //以及C_TMB2_128Hz、C_TMB2_256Hz、C_TMB2_512Hz、C_TMB2_1024Hz *P_INT_Ctrl_New|=C_IRQ6_TMB1;//这里对应于C_TMB2_XXXX用C_IRQ6_TMB1,C_TMB1_XXXX用C_IRQ6_TMB1 asm("INT IRQ"); while(1) { *P_Watchdog_Clear = C_WDTCLR; } }
#include "SPCE061A.H" unsigned int g_uiOutput=0,iii=0; void IRQ6(void) __attribute__ ((ISR)); void IRQ6(void) { if(*P_INT_Ctrl&C_IRQ6_TMB1)//C_IRQ6_TMB1对应于main()中的*P_INT_Ctrl_New|=XXXXXXX { if(g_uiOutput==64)//用于查看是否真的以秒为累加,64为频率数 { g_uiOutput=0; iii++; } g_uiOutput++; *P_Watchdog_Clear=0x0001; *P_INT_Clear=C_IRQ6_TMB1;//C_IRQ6_TMB1对应于main()中的*P_INT_Ctrl_New|=XXXXXXX } } main() { *P_SystemClock = 0x0080; //设置高的CPU主频,可以操作得更快 asm("INT OFF"); *P_TimeBase_Setup=C_TMB1_64Hz; //这里可以选择C_TMB1_8Hz、C_TMB1_16Hz、C_TMB1_32Hz、C_TMB1_64Hz //以及C_TMB2_128Hz、C_TMB2_256Hz、C_TMB2_512Hz、C_TMB2_1024Hz *P_INT_Ctrl_New|=C_IRQ6_TMB1;//这里对应于C_TMB2_XXXX用C_IRQ6_TMB1,C_TMB1_XXXX用C_IRQ6_TMB1 asm("INT IRQ"); while(1) { *P_Watchdog_Clear = C_WDTCLR; } }
本文介绍了一个基于SPCE061A微控制器的定时中断程序实例,通过配置时间基准与时钟频率,实现了每秒中断一次的功能。该程序使用了C语言编写,并详细展示了如何设置中断控制寄存器及处理中断服务例程。
2651

被折叠的 条评论
为什么被折叠?



