找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 870|回复: 2
打印 上一主题 下一主题
收起左侧

关于STM32串口部分程序的疑问

[复制链接]
跳转到指定楼层
楼主
ID:728915 发表于 2021-4-15 18:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是菜鸟,想请教各位大佬:
       这是STM32串口部分的一段程序,我有几个疑问:
1.u8是定义ReceiveOK(USART_TypeDef *USARTx)为char类型用的吗?字符可以带参数USART_TypeDef *USARTx?
2.在u8 ReceiveOK(USART_TypeDef *USARTx)这段程序里*USARTx这是一个指针类型,指向USARTx?
3.return返回的值1、2、0是返回给ReceiveOK(USART_TypeDef *USARTx)这个整体吗?
4.这段程序的return 0 的部分是不是有问题,不会返回0?

//程序如下:
//接收一帧数据函数;     参数:串口;  返回值:1=ON,2=OFF,0=无效
u8 ReceiveOK(USART_TypeDef *USARTx)
{
        vu32 cnt=0;
        while(1)
        {
                RxBuffer[RxCount ++]=Receive1Byte (USARTx);
                if(strstr ((char*)RxBuffer ,"ON")!=NULL )   //接收字符串中查找ON
                {
                        RxCount =0;   //为下条接收指令做好准备,否则会导致下一条指令无响应
                        return 1;
                }
                else
                        if(strstr ((char*)RxBuffer ,"OFF")!=NULL )
                        {
                                RxCount =1;
                                return 2;
                        }
                        else
                                if(RxCount >3)
                                        RxCount =0;  //如果接收了3字节(根据发送长度来定)但没有收到有效指令,则归零,重新接收。
                                  cnt++;                                
                                    if (cnt>100000)
                                            return 0;    //如果超时则直接返回0
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:592807 发表于 2021-4-16 09:04 | 只看该作者
1.USART_TypeDef是一个结构体,里面包含了串口所有的寄存器。函数形参是可以传体结构体的
2.ReceiveOK(USART_TypeDef *USARTx)里面USARTx是一个指针,但不是随便一个指针是有规定的早在h文件里面定义好了,例如ReceiveOK(USART1);ReceiveOK(USART2);ReceiveOK(USART3);ReceiveOK(USART4);
3.返回值是这个函数的值, 例如 a = ReceiveOK(USART1),a的值就是return值
4.会返回0的,前提是你没发送ON也没发送OFF,然后你的函数执行这句while(1){cnt++;}100000次后寄回返回0.

给你建议else后面语句大于1句,最好加{},就算后面是if是switch

另外一个建议,你如果是初学者是菜鸟就不要深纠,知道怎么用就好了。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:728915 发表于 2021-4-16 10:51 | 只看该作者
黄youhui 发表于 2021-4-16 09:04
1.USART_TypeDef是一个结构体,里面包含了串口所有的寄存器。函数形参是可以传体结构体的
2.ReceiveOK(USA ...

好的,谢谢您的指点。我本来的打算是在例程的基础上稍微改下参数,好做一个模板,以后用的时候套着用就行。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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