这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » USART中断接收

共20条 2/2 1 2 跳转至
助工
2012-06-25 15:47:04     打赏
11楼

//USART1发送数据 --------------------------------------------------------------/
void USART1_Putchar(u8 ch)
{
 USART_SendData(USART1, ch);
 //等待数据发送完毕
 while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
}

//USART1接收数据
u8 USART1_Getchar(void)
{
 //while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE)== RESET);
 while(USART_GetITStatus(USART1, USART_IT_RXNE) == RESET);

 //返回接收数据
 return(USART_ReceiveData(USART1));
}


工程师
2012-06-25 16:15:59     打赏
12楼
中断服务函数明显问题啊,你找个历程看看吧,你这个弄的也不规范啊。用的那个库?

工程师
2012-06-25 16:18:49     打赏
13楼

void USART1_IRQHandler(void) //串口1中断服务程序
{
 if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断
  {
   USART_RX_BUF[USART_RX_STA++]=USART_ReceiveData(USART1);   //读取接收到的数据
 }


这样多简单啊,用那么麻烦,还调用什么函数干嘛


助工
2012-06-25 16:45:55     打赏
14楼
我也是这样吖!usart1_getchar()是自己写的接收函数,其实跟你写的是一样的


工程师
2012-06-25 21:18:50     打赏
15楼
 if(ch[count] == 0)
看看那一句,是不是想用'\0'?

助工
2012-06-26 01:05:49     打赏
16楼
这两个表达的应该是一样的吧!!!!

院士
2012-06-26 10:43:00     打赏
17楼
一样。

在ascii码下都是0x00

院士
2012-06-26 10:45:13     打赏
18楼
如果你在接收时通过jtag 进行了中断调试,
那么确实会有之后的数据无法接收的现象。

楼主可以先不要用dma方式啊~~

这样,都不知道是串口中断的问题,还是dma配置的问题

助工
2012-06-26 11:06:46     打赏
19楼

在中断程序中设置断点,进行调试,按F5,程序怎么都无法进入中断程序的断点!
是不是要进行其他设置?


ps:我只开了接收中断!


助工
2012-06-26 11:09:36     打赏
20楼
DMA通道与外设有固定使用的方式!

就像串口USART1的发送只能用DMA1_Channel4,是这样吧!?

共20条 2/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]