又玩定时TIMER4,这次给自己挖了个坑 ,最后打开定时器时钟,结果就是不进中断,对照列程才发现.
#include "SYSCFG.h"
volatile char W_TMP @ 0x70 ;//系统占用不可以删除和修改
volatile char BSR_TMP @ 0x71 ;//系统占用不可以删除和修改
void user_isr();//用户中断程序,不可删除
volatile char a1;
#define led PA1
#define led_out TRISA1
void interrupt ISR(void)
{
#asm;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
NOP;//系统设置不可以删除和修改
#endasm;//系统设置不可以删除和修改
user_isr(); //用户中断函数
}
void user_isr() //用户中断函数
{
//led=~led;
//if(led){ led =0;} else{led=1;}
if(T4UIE&&T4UIF)
{
T4UIF =1;
// led=~led;
a1 ++;
if(a1 >50)
{
a1 =0;
led=~led;
//if(led){ led =0;} else{led=1;}
}
}
}
main()
{
TIM4EN =1; //TIM4 模块时钟
SYSON =0; //睡眠模式下,系统时钟控制
T4ARPE =1; //计数周期的自动预装载
T4CKS1 =0; //00=Sysclk
T4CKS0 =0;
T4OPM =0; //单脉冲模式关闭
T4URS =1; //更新事件中断源计数器上溢
T4UDIS =0; //产生更新事件控制0=允许
T4CEN =1; //TIM4 计数器使能
T4PSC2 =1; //Timer4预分频器110 = 64
T4PSC1 =1;
T4PSC0 =1;
//T4CNT //Timer4计数值
TIM4ARR =0x7f; //预装载值
//TIM4ARR =0xfe; //预装载值
GIE =1; //全局中断
PEIE =1; //外设总中断
T4UIE =1; //Timer4 更新事件中断
//T4UG =1; //Timer4 更新事件软件中断
//T4UIF
led_out =0;
led =0;
while(1)
{
//led=~led;
}
}
//===========================================================
|