2019-03-23 17:30发布
ienglgge 发表于 2017-10-9 13:39 整个程序有马上重新初始化? 是不是 重启了。有没有打开看门狗。看看执行到什么地方出的问题。
最多设置5个标签!
打开看门狗了的 我己感觉有可能是中断初始化的问题 因为有一个端口是给无线用的 这部分的程序不是我写的 另外一个端口是做电压检测用的 下面是程序
void Init_EXTI(void) //这是作为检测电压用的中断初始化
{
EXTI_DeInit();
GPIO_Init(GPIOE,GPIO_Pin_7,GPIO_Mode_In_FL_IT);//设置PE7为浮空输入中断模式
EXTI_SetPinSensitivity (EXTI_Pin_7,EXTI_Trigger_Rising);//选择PE7为外部中断敏感信号
EXTI_SelectPort(EXTI_Port_E);
// ITC_SetSoftwarePriority(EXTI3_IRQn,ITC_PriorityLevel_1);//设置中断优先级
// GPIO_ExternalPullUpConfig(GPIOE, GPIO_Pin_7, ENABLE); //上拉
// EXTI_ClearITPendingBit (EXTI_IT_Pin7);//清中断标志位
// GPIO_ResetBits(Relay_RW_PORT,Relay_RW_PORT_BIT);
}
INTERRUPT_HANDLER(EXTI7_IRQHandler,15) //这是作为检测电压用的中断
{
EXTI_ClearITPendingBit(EXTI_IT_Pin7);
if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_7))
{
delay(200);
if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_7))
{
GPIO_ResetBits(LED_RW_PORT,LED_RW_PORT_BIT);
delay(5000);
GPIO_SetBits(LED_RW_PORT,LED_RW_PORT_BIT);
}
}
//Relay_Closed();
flag = 1;
EXTI_ClearITPendingBit(EXTI_IT_Pin7);
}
//这是无线的中断
INTERRUPT_HANDLER(EXTI4_IRQHandler,12) //PC0中断 RF_GDO0;
{
EXTI_ClearITPendingBit(EXTI_IT_Pin4);
SX127X_LoRaRxPacket(g_ucRTxBuff);
EXTI_ClearITPendingBit(EXTI_IT_Pin4); //清除我待处理的部分
flag = 1;
}
//下面是 无线部分
void Sx127xInitHard(void)
{
uint8_t registerValue;
GPIO_Init(SX1278_TXE_PORT, SX1278_TXE_PIN, GPIO_Mode_Out_PP_High_Slow);
GPIO_ResetBits(SX1278_TXE_PORT, SX1278_TXE_PIN);
GPIO_Init(SX1278_RXE_PORT, SX1278_RXE_PIN, GPIO_Mode_Out_PP_High_Slow);
GPIO_SetBits(SX1278_RXE_PORT, SX1278_RXE_PIN);
//REST REST输出置低
// SX1278_REST_ANS = 0;
// SX1278_REST_PIN = 0;
// SX1278_REST_DIR = 0;
GPIO_Init(SX1278_RST_PORT, SX1278_RST_PIN, GPIO_Mode_Out_PP_High_Slow);
GPIO_ResetBits(SX1278_RST_PORT, SX1278_RST_PIN);
//CSN CSN输出置高
// SX1278_CSN_ANS = 0;
// SX1278_CSN_PIN = 1;
// SX1278_CSN_DIR = 0;
GPIO_Init(SX1278_SCS_PORT, SX1278_SCS_PIN, GPIO_Mode_Out_PP_High_Slow);
GPIO_SetBits(SX1278_SCS_PORT, SX1278_SCS_PIN);
//SCLK SCLK输出置低
// SX1278_SCLK_ANS = 0;
// SX1278_SCLK_PIN = 0;
// SX1278_SCLK_DIR = 0;
GPIO_Init(SX1278_SCK_PORT, SX1278_SCK_PIN, GPIO_Mode_Out_PP_High_Slow);
GPIO_ResetBits(SX1278_SCK_PORT, SX1278_SCK_PIN);
//MOSI MOSI输出置高
// SX1278_MOSI_ANS = 0;
// SX1278_MOSI_PIN = 1;
// SX1278_MOSI_DIR = 0;
GPIO_Init(SX1278_MOSI_PORT, SX1278_MOSI_PIN, GPIO_Mode_Out_PP_High_Slow);
GPIO_SetBits(SX1278_MOSI_PORT, SX1278_MOSI_PIN);
//MISO MISO输入
// SX1278_MISO_ANS = 0;
// SX1278_MISO_DIR = 1;
SX1278_MISO_MI;
//开启SX127x电源
GPIO_Init(GPIOA, BIT3, GPIO_Mode_Out_PP_High_Slow);
GPIO_ResetBits(GPIOA, BIT3);
//SX1278_POWER_ON();
__delay_ms(10); //电源稳定时间
//sx127x REST引脚正常工作
//SX1278_REST_PIN = 1;
SX1278_RST_H;
__delay_ms(10); //不低于10ms
//IRQ IRQ输入
// SX1278_IRQ_ANS = 0;
// SX1278_IRQ_DIR = 1;
GPIO_Init(SX1278_INT_PORT, SX1278_INT_PIN, GPIO_Mode_In_FL_IT);
// GPIO_Init(SX1278_INT_PORT, SX1278_INT_PIN, GPIO_Mode_In_FL_No_IT);
EXTI_SetPinSensitivity(EXTI_Pin_4,EXTI_Trigger_Rising);
registerValue = SpiReadOneRegister(LR_RegFrMsb);
SpiWriteOneRegister(LR_RegOpMode,registerValue);
SpiWriteOneRegister(LR_RegOpMode,MODE_SLEEP); //进入Sleep模式.
}
一周热门 更多>