在main函数里通过串口3去配置无线接收模块,串口1去配置无线发送模块,但是,问题出现在,将接收模块配置数组通过串口3配置完成,继续通过串口1去配置,串口1执行完成后,程序就卡死了,不继续往下执行了,就直接不动了。
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(9600);
uart3_init(9600);
delay_init();
delay_ms(100);
E32_TTL_100_Init_RX_TX();
LED_Init();
LoRa_Set();//这个函数已执行程序就挂掉了,test_led不会亮了
Test_LED=0;
while(1)
{
if(USART3_RX_STA&0x8000)
{
Deal_RX_Info();
USART3_RX_STA=0;
}
}
}
void LoRa_Set(void)
{
delay_ms(25);
RXM0 = 1;
RXM1 = 1;
delay_ms(25);
Senddata_RX(RX_SET);
delay_ms(25);
RXM0 = 0;
RXM1 = 0;
delay_ms(25);
TXM0 = 1;
TXM1 = 1;
delay_ms(25);
Senddata_TX(TX_SET); //通过stlink调试发现,程序就在此处一执行,就不会往下执行了
delay_ms(25);
TXM0 = 0;
TXM1 = 0;
}
void Senddata_RX(u8 s[6])//通过串口3配置无线接收模块,也就是通过串口三去发送无线模块的属性数组
{
u8 i=0;
for(i=0;i<6;i++)
{
while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET);
USART_SendData(USART3, s);
}
USART_ClearITPendingBit(USART3, USART_IT_TC);
}
void Senddata_TX(u8 s[6])//通过串口1配置无线发送模块,也就是通过串口1去发送无线模块的属性数组
{
u8 i=0;
for(i=0;i<6;i++)
{
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
USART_SendData(USART1, s);
}
USART_ClearITPendingBit(USART1, USART_IT_TC);
}
发现一个问题就是只要把与串口1接的那个无线模块拔下来,程序就可以往下执行了,很怪异的现象,硬件监测也没发现有短路的情况。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>