初级会员

- 积分
- 95
- 金钱
- 95
- 注册时间
- 2013-6-1
- 在线时间
- 37 小时
|
10金钱
各位好,我在原子哥的串口例程上仅将发送的模式由查询改为了中断的形式,希望同时实现发送中断与接收中断的效果,在战舰板反复实验都失败,下载后无任何反应了,所以在这里请教一下大家,请各位指导! 谢谢
u8 usart_send=0; // 新增加了一个全局变量作为发送完成判断用途 (该变量用来模以UOCS中的信号量)
改动 1: USART_ITConfig(USART1, USART_IT_RXNE | USART_IT_TC, ENABLE); //同时开启了发送中断与接收中断
改动 2: if(USART_GetITStatus(USART1, USART_IT_TC)) //在原来的串口接收中断程序中新增加了这段发送中断程序
{
USART_ReceiveData(USART1);
usart_send=0xff;
}
改动 3: //在以下这段程序中, 仅将 while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==0); 改成了 while( !usart_send ); usart_send=0;
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;
printf("\r\n您发送的消息为:\r\n");
for(t=0;t<len;t++)
{
USART_SendData(USART1,USART_RX_BUF[t]);
while( !usart_send );
usart_send=0;
// while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==0); //等待发送完成
}
printf("\r\n\r\n");//2åèë»»DD
USART_RX_STA=0;
}else
{
times++;
if(times%5000==0)
{
printf("\r\nALIENTEK MiniSTM32¿a·¢°å ′®¿úêμÑé\r\n");
printf("ÕyμãÔ-×ó@ALIENTEK\r\n\r\n\r\n");
}
if(times%200==0)printf("Çëêäèëêy¾Y,òÔ»Ø3μ¼ü½áêø\r\n");
if(times%30==0)LED0=!LED0;//éá˸LED,ìáê¾Ïμí3ÕyÔúÔËDD.
delay_ms(10);
}
}
|
|