打印
[STM32F1]

stm串口中断接收数据程序

[复制链接]
1508|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
void USART1_IRQHandler(void)                        //´®¿Ú1ÖжϷþÎñ³ÌÐò
        {       
          u8 Res;
#if SYSTEM_SUPPORT_OS                 //Èç¹ûSYSTEM_SUPPORT_OSΪÕ棬ÔòÐèÒªÖ§³ÖOS.
        OSIntEnter();   
#endif
       
               
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //½ÓÊÕÖжÏ(½ÓÊÕµ½µÄÊý¾Ý±ØÐëÊÇ0x0d 0x0a½áβ)
                {
                        Res =USART_ReceiveData(USART1);        //¶ÁÈ¡½ÓÊÕµ½µÄÊý¾Ý
               
                if((USART_RX_STA&0x8000)==0)//½ÓÊÕδÍê³É
                        {
                        if(USART_RX_STA&0x4000)//½ÓÊÕµ½ÁË0x0d
                                {
                                if(Res!=0x0a)USART_RX_STA=0;//½ÓÊÕ´íÎó,ÖØпªÊ¼
                                else USART_RX_STA|=0x8000;        //½ÓÊÕÍê³ÉÁË
                                }
                        else //»¹Ã»ÊÕµ½0X0D
                                {       
                                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;//½ÓÊÕÊý¾Ý´íÎó,ÖØпªÊ¼½ÓÊÕ          
                                        }                 
                                }
               
                        }       
     }
我想问问,调试的时候要点击串口调试助手的发送按钮才会触发接收中断,这是为什么,能不能自己用按键然控制这个中断。希望大家帮帮忙
沙发
mmuuss586| | 2016-8-14 18:29 | 只看该作者
按键又没控制中断;

数据,你可以自发自收,进入中断啊;

使用特权

评论回复
板凳
yklstudent| | 2016-8-14 18:55 | 只看该作者
不给串口发数据,你让串口怎么进入接收中断

使用特权

评论回复
地板
时光深巷已无她|  楼主 | 2016-8-14 19:32 | 只看该作者
yklstudent 发表于 2016-8-14 18:55
不给串口发数据,你让串口怎么进入接收中断

用调试助手可以发数据给mcu,但是调试助手要点击发送,才能触发接收中断,要是与FPGA通信,该怎么来触发接收中断?(发送数据的问题可以用复位键,按一下发送一次)

使用特权

评论回复
5
时光深巷已无她|  楼主 | 2016-8-14 19:35 | 只看该作者
mmuuss586 发表于 2016-8-14 18:29
按键又没控制中断;

数据,你可以自发自收,进入中断啊;

比如FPGA向stm32发送数据,stm32肯定是被触发了接收中断,然后进入中断函数接收数据,关键这个接收中断是怎么触发的呢?

使用特权

评论回复
6
yklstudent| | 2016-8-14 21:34 | 只看该作者
时光深巷已无她 发表于 2016-8-14 19:35
比如FPGA向stm32发送数据,stm32肯定是被触发了接收中断,然后进入中断函数接收数据,关键这个接收中断是 ...

你不必考虑的那么细,你又不是设计芯片的;
你FPGA周期给STM32发送数据就可以了

使用特权

评论回复
7
yiyigirl2014| | 2016-8-14 22:26 | 只看该作者
其实跟单片机是一样的,不需要考虑太多的差异化

使用特权

评论回复
8
时光深巷已无她|  楼主 | 2016-8-15 09:13 | 只看该作者
yklstudent 发表于 2016-8-14 21:34
你不必考虑的那么细,你又不是设计芯片的;
你FPGA周期给STM32发送数据就可以了 ...

好吧,,,谢谢

使用特权

评论回复
9
时光深巷已无她|  楼主 | 2016-8-15 09:14 | 只看该作者
yiyigirl2014 发表于 2016-8-14 22:26
其实跟单片机是一样的,不需要考虑太多的差异化

关键老师要我们实现fpga和stm32之间的通信

使用特权

评论回复
10
紫气东升| | 2016-8-15 15:40 | 只看该作者
楼主,这个程序是用库函数写的吗?

使用特权

评论回复
11
时光深巷已无她|  楼主 | 2016-8-15 15:55 | 只看该作者
紫气东升 发表于 2016-8-15 15:40
楼主,这个程序是用库函数写的吗?

是的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

247

帖子

4

粉丝