int main(void)
{
u8 i;
u16 t;
u16 len;
u16 times=0;
u16 Temprature;
u16 StressX;
u16 StressY;
u8 SettingData[6];
//u16 times=0;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
LED_Init();
KEY_Init();
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;
if (len==6)
{
for(t=0;t<6;t++)
{
SettingData[i]=USART_RX_BUF[t];
}
}
}
USART_RX_STA=0;
if(times%100==0)
{
USART_SendData(USART1,SettingData[0] );
USART_SendData(USART1,SettingData[1] );
USART_SendData(USART1,SettingData[2] );
USART_SendData(USART1,SettingData[3] );
USART_SendData(USART1,SettingData[4] );
USART_SendData(USART1,SettingData[5] );
USART_SendData(USART1,'a' );
}
times++;
if(times%30==0)LED0=!LED0;//Blink LED, check the system is operating or not...
delay_ms(10);
}
}
这是主函数的,目的是想把3个参数的数据按顺序放在setting data中发送出去
void USART1_IRQHandler(void)
{
u8 Res;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
Res =USART_ReceiveData(USART1);
if((USART_RX_STA&0x8000)==0)
{
if(USART_RX_STA&0x4000)
{
if(Res!=0xfe)USART_RX_STA=0;
else USART_RX_STA|=0x8000;
}
else
{
if(Res==0xff)USART_RX_STA|=0x4000;
else
{
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
USART_RX_STA++;
if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;
}
}
}
}
#if SYSTEM_SUPPORT_OS
OSIntExit();
#endif
}
/*void USART1_IRQHandler(void)
u8 Res;
#if SYSTEM_SUPPORT_OS
OSIntEnter();
#endif
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
Res =USART_ReceiveData(USART1);
if((USART_RX_STA&0x8000)==0)
{
if(USART_RX_STA&0x4000)
{
if(Res!=0x0a)USART_RX_STA=0;
else USART_RX_STA|=0x8000;
}
else
{
if(Res==0x0d)USART_RX_STA|=0x4000;
else
{
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
USART_RX_STA++;
if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;
}
}
}
}
这是中断服务函数 是在串口实验4基础上改的 把标志位0x0d 0x0a 改成了0xff 0xfe 然后发送数组01 02 03 04 05 06 ff fe 01 02 03 04 05 06 ff fe 现在是接受不到 请大佬看看那个地方有问题 谢谢啦
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>