OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6565|回复: 7

用stm32f103串口接收数据时怎么把接收数据做判断处理,例如接收到48-50mm输出1,接收51-53输出0

[复制链接]

9

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2019-1-3
在线时间
34 小时
发表于 2019-1-17 21:19:26 | 显示全部楼层 |阅读模式
5金钱
用stm32f103串口接收数据时怎么把接收数据做判断处理,例如接收到48-50mm输出1,接收51-53输出0请大神指点交流,谢谢~

#include "usart.h"                 

void USART1_Init(u32 bound)
{
   //GPIO端口设置
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

        
        /*  ÅäÖÃGPIOμÄÄ£ê½oíIO¿ú */
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//TX                           //′®¿úêä3&#246A9
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;            //¸′óÃíÆíìêä3ö
        GPIO_Init(GPIOA,&GPIO_InitStructure);  /* 3õê¼»ˉ′®¿úêäèëIO */
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//RX                         //′®¿úêäè&#235A10
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;                  //Ä£Äaêäèë
        GPIO_Init(GPIOA,&GPIO_InitStructure); /* 3õê¼»ˉGPIO */
        

   //USART1 3õê¼»ˉéèÖÃ
        USART_InitStructure.USART_BaudRate = bound;//2¨ìØÂêéèÖÃ
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×Ö3¤Îa8λêy¾Y¸ñê½
        USART_InitStructure.USART_StopBits = USART_StopBits_1;//ò»¸öí£Ö1λ
        USART_InitStructure.USART_Parity = USART_Parity_No;//ÎTÆæÅ¼D£Ñéλ
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//ÎTó2¼têy¾Yá÷¿ØÖÆ
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;        //êÕ·¢Ä£ê½
        USART_Init(USART1, &USART_InitStructure); //3õê¼»ˉ′®¿ú1
        
        USART_Cmd(USART1, ENABLE);  //ê1Äü′®¿ú1
        
        USART_ClearFlag(USART1, USART_FLAG_TC);
               
        USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//¿aÆôÏà1ØÖD¶Ï

        //Usart1 NVIC ÅäÖÃ
        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//′®¿ú1ÖD¶Ïí¨μà
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//ÇàÕ¼óÅÏè¼¶3
        NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;                //×óóÅÏè¼¶3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQí¨μàê1Äü
        NVIC_Init(&NVIC_InitStructure);        //¸ù¾YÖ¸¶¨μÄ2Îêy3õê¼»ˉVIC¼Ä′æÆ÷¡¢        
}


void USART1_IRQHandler(void)                        //′®¿ú1ÖD¶Ï·tÎñ3ìDò
{
        u8 r;
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //½óêÕÖD¶Ï
        {
                r =USART_ReceiveData(USART1);//(USART1->DR);        //¶á衽óêÕμ½μÄêy¾Y
                USART_SendData(USART1,r);
                while(USART_GetFlagStatus(USART1,USART_FLAG_TC) != SET);
        }
        USART_ClearFlag(USART1,USART_FLAG_TC);
}         




最佳答案

查看完整内容[请看2#楼]

参考这个帖子,就可以找到答案:http://www.openedv.com/forum.php?mod=viewthread&tid=280856&extra=
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4307
金钱
4307
注册时间
2018-6-30
在线时间
808 小时
发表于 2019-1-17 21:19:27 | 显示全部楼层
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-2-24
在线时间
3 小时
发表于 2019-3-16 19:14:45 | 显示全部楼层
1208 发表于 2019-1-17 21:19
参考这个帖子,就可以找到答案:http://www.openedv.com/forum.php?mod=viewthread&tid=280856&extra=

文件打不开
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4307
金钱
4307
注册时间
2018-6-30
在线时间
808 小时
发表于 2019-3-18 11:36:52 | 显示全部楼层

下载解压了没,你是那个程序打不开
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-2-24
在线时间
3 小时
发表于 2019-3-19 17:27:32 | 显示全部楼层
1208 发表于 2019-3-18 11:36
下载解压了没,你是那个程序打不开

现在能打开了,但是程序好像不太对吧,你这个不是接收数据的程序啊,明明是发送数据
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4307
金钱
4307
注册时间
2018-6-30
在线时间
808 小时
发表于 2019-3-19 18:14:59 | 显示全部楼层
本帖最后由 1208 于 2019-3-19 18:18 编辑
Sivan 发表于 2019-3-19 17:27
现在能打开了,但是程序好像不太对吧,你这个不是接收数据的程序啊,明明是发送数据

要发送才有相应的接收,你也可以写个数组自动发,不要自己发送
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-2-24
在线时间
3 小时
发表于 2019-3-24 16:34:55 | 显示全部楼层
1208 发表于 2019-3-19 18:14
要发送才有相应的接收,你也可以写个数组自动发,不要自己发送

我的服务器直接给4G模块发送数据然后4G模块发送给串口,不用串口发送,串口只负责接收并解析数据,这个你知道怎么写吗?
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4307
金钱
4307
注册时间
2018-6-30
在线时间
808 小时
发表于 2019-3-25 10:08:35 | 显示全部楼层
Sivan 发表于 2019-3-24 16:34
我的服务器直接给4G模块发送数据然后4G模块发送给串口,不用串口发送,串口只负责接收并解析数据,这个你 ...

这个没有弄过
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-24 07:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表