|
void Exti_config()
{
P_SW2 |=0x80; // 配置P4.6为外部中断下降沿触发
P4M1 = 0x00; // 设置P4M1寄存器,准双向口
P4M0 = 0x00; // 设置P4M0寄存器
P4IM1 = 0x00; //上升沿触发
P4IM0 = 0x40; //上升沿触发
PINIPH = 0x40;
PINIPL = 0x00; //中断优先级配置HL:10优先级为2
P4INTE = 0x40; // 置位P4INTE寄存器的第6位,P4端口中断使能
P4INTF = 0x40; // 置位P4INTF寄存器的第6位,P4端口中断标志位
}
void Timer2_config(void)
{
TIM_InitTypeDef TIM_InitStructure; //结构定义
TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload; //指定工作模式, TIM_16BitAutoReload,TIM_16Bit,TIM_8BitAutoReload,TIM_16BitAutoReloadNoMask
TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T; //指定时钟源, TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext
TIM_InitStructure.TIM_ClkOut = DISABLE; //是否输出高速脉冲, ENABLE或DISABLE
TIM_InitStructure.TIM_Value = 65536UL- (MAIN_Fosc / 2500UL); //65536UL - (MAIN_Fosc / 1005UL); //初值,
TIM_InitStructure.TIM_Run = DISABLE; //是否初始化后启动定时器, ENABLE或DISABLE
Timer_Inilize(Timer2,&TIM_InitStructure); //初始化Timer0 Timer0,Timer1,Timer2,Timer3,Timer4
NVIC_Timer2_Init(ENABLE,Priority_3); //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
}
void Timer2_ISR_Handler (void) interrupt TMR2_VECTOR //进中断时已经清除标志
{
de = P46; //读取P46电平状态
bit_data <<= 1;
bit_data |= de; //存到bit_data里
bit_index++; //移位
P32 = 1;
if(bit_index == 3)
{ //接收正常
if(bit_data == 0x0e) //是否符合1110,对应1
{
byte_data <<= 1;
byte_data |= 0x01;
byte_index++;
bit_data = 0x01;
bit_index = 0; //重置
}
else if(bit_data == 0x08) //是否符合1000,对应0
{
byte_data <<= 1;
byte_data |= 0x00;
byte_index++;
bit_data = 0x01;
bit_index = 0; //重置
}
else
{ //接收不正常,舍弃这一组data
err_flag = 1;
bit_data = 0x01;
bit_index = 0;
byte_data = 0x00;
byte_index = 0;
OOK_Rev_Buffer[0] = OOK_Rev_Buffer[1] = OOK_Rev_Buffer[2] = 0x00;
buf_index = 0;
Timer2_Stop();
}
if(byte_index == 8 ) //一字节码接收完毕********************
{
OOK_Rev_Buffer[buf_index] = byte_data;
buf_index++;
byte_data = 0x00;
byte_index = 0;
test_flag = 0xff;
// test_flag1 = 0xee;
}
Timer2_Stop();
}
else
{
P32 =0;
}
}
void P4_ISR (void) interrupt 13 //进中断时已经清除标志
{
Timer2_Run(1); //开启定时器
test_flag = 0xff;
P4INTF = 0x00; //软件清除中断标志位
}
求助,上电后一段时间就触发不了P4口外部中断的原因
|
|