分享通过复旦微魔方来找到FM33LG048串口3无法发送和接收原因的例子

news/2024/2/29 3:13:49

今天来分享一个关于开发国产芯片(复旦微FM33LG048)串口3时候遇到一个无法发送和接收原因,通过使用官网的图形配置工具来成功解决问题的案例。

具体情况是这样的,该芯片官网有提供相应的keil参考例子,因为我要用到这个芯片上面的五个串口,所以拿了官方的UART0例子当做参考,然后看了芯片手册还有时钟树以及开发注意事项,上面就说串口0/1有双时钟,其他三个串口3/4/5(没有串口2)就跟着时钟时钟走,因此其他几个串口外设驱动我也就参考串口0的参考写。但是莫名其妙的是单独串口3不能正常收发,其他几个参考下来都可以的。

于是又仔细去看了一下芯片手册关于串口那部分的说明,也没有发现串口3不一样的地方,唯独就是串口3好像只有两个引脚可以使用,没有映射到其他引脚,像另外四个串口的收发引脚都是两个。难道会跟着有关?后来去网上查原因,发现复旦微也有跟STM32CubeMX一样的图形化配置工具,就是如下图所示这样,正常串口3有问题,提供的keil例子里面也没有串口3的例子,那就用官方工具生成试试看。
在这里插入图片描述
关于这个东西,它也有自己的名字,复旦微叫它魔方,也挺有意思的这个名字取得。然后就是一顿操作,点击配置了一下串口3的设置参数等,再把配置的工程下载下来,打开看一下。结果一下子就知道了原因,官方对串口3的这一步配置与其他几个串口都不一样,就是在这个地方。

GPIO_InitStruct.remapPin      = FL_ENABLE;    //使能数字功能重定向

试了一下,把串口3两个引脚的remapPin都设置为使能,发现果然成功实现收发了。因为我看串口0是没有使能数字功能重定向,也就一并模范了,没想到串口3因为自身原因造成无法收发,必须配置为数字功能重定向使能才行。具体串口3的配置如下:

    GPIO_InitStruct.pin           = FL_GPIO_PIN_2;GPIO_InitStruct.mode          = FL_GPIO_MODE_DIGITAL;GPIO_InitStruct.outputType    = FL_GPIO_OUTPUT_PUSHPULL;GPIO_InitStruct.pull          = FL_ENABLE;     //上拉使能GPIO_InitStruct.remapPin      = FL_ENABLE;    //使能数字功能重定向GPIO_InitStruct.analogSwitch  = FL_DISABLE;    //不使能模拟开关使能(void)FL_GPIO_Init(GPIOB, &GPIO_InitStruct);GPIO_InitStruct.pin           = FL_GPIO_PIN_3;GPIO_InitStruct.mode          = FL_GPIO_MODE_DIGITAL;GPIO_InitStruct.outputType    = FL_GPIO_OUTPUT_PUSHPULL;GPIO_InitStruct.pull          = FL_DISABLE;    //发送不上拉GPIO_InitStruct.remapPin      = FL_ENABLE;     //串口3需要将其使能才能正常工作GPIO_InitStruct.analogSwitch  = FL_DISABLE;(void)FL_GPIO_Init(GPIOB, &GPIO_InitStruct);

总结这次解决的方法就是需要将remapPin配合为FL_ENABLE,也就是使能引脚的数字重定向功能即可~,如果也有其他小伙伴在开发这款芯片时候也遇到这种情况,可以把我这个例子当做参考哈。同时也感觉现在国产芯片做的越来越不错了,一些配套工具也越来越完善了。

好了,今天的例子就分享到这里了~

本人水平有限,上述信息仅供学习参考,如有错误和不妥之处,请多多指教。
另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞和收藏,谢谢~


https://www.jiucaihua.cn/news/show-4626225.html

相关文章

【复变函数笔记】解析函数的定义和性质

文章目录 解析函数的等价定义解析函数的性质 解析函数的等价定义 解析函数的定义: f ( z ) f(z) f(z)在区域内可导则在区域内解析,在一点解析就是在某一邻域内可导。解析函数不可能只在一点解析。柯西-黎曼方程:函数 f ( z ) u ( x , y ) …

python基于DeeplabV3Plus开发构建裂缝分割识别系统,并实现裂缝宽度计算测量

在我之前的文章中已经有不少基于裂缝场景的数据开发构建的模型了,感兴趣的话可以自行移步阅读,如下: 《基于yolov5sbifpn实践隧道裂缝裂痕检测》 《基于YOLOV7的桥梁基建裂缝检测》 《水泥路面、桥梁基建、隧道裂痕裂缝检测数据集》 《基…

(学习日记)2023.04.26

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

【数据集处理】中国地面气候资料日值数据集(V3.0)

1 数据集介绍-中国地面气候资料日值数据集(V3.0) 中国地面气候资料日值数据集(V3.0)包含以下气象数据资料(包括降水、气温、风速等)。 2 数据处理 以湿度数据(RHU) 处理为例,数据文件如下: 2.1 步骤1:从文件中提取数据 首先提取所有需要的有效信息,查看【数据表格…

C/C++线程绑核详解

在一些大型的工程或者特殊场景中,我们会听到绑核,绑核分为进程绑核和线程绑核。绑核的最终目的都是为了提高程序和性能或者可靠性。 一:为什么需要绑核 操作系统发展至今,已经能很好的平衡运行在操作系统上层的应用,兼…

FreeRTOS进阶学习

一、FreeRTOS内核控制控制函数: 1、请求任务切换函数: 函数原型:#define taskYIELD() 函数解析:实际上是一个宏定义的函数,调用一次会触发pendSV中断来实现任务切换; /// 2、在任务中进入临界区函数&…

javascript基础十七:bind、call、apply 区别?如何实现apply、call、bind?

一、作用 call、apply、bind作用是改变函数执行时的上下文,简而言之就是改变函数运行时的this指向 那么什么情况下需要改变this的指向呢? 举个粟子: var name 小爱同学 undefined const obj {name:allen ye,say:function(){console.log(th…

全局流控 or 端到端拥塞控制

同事推荐一篇论文 Bolt: Sub-RTT Congestion Control for Ultra-Low Latency,写点想法。 端到端原则使网络在拥塞控制中始终扮演配角,人们认为拥塞控制是端到端的事。几十年来人们设计的拥塞控制机制始终围绕 “主机在什么情况下要增减 cwnd” 打转。但…

2023 华为 Datacom-HCIE 真题题库 07/12--含解析

多项选择题 1.[试题编号:190187] (多选题)如图所示的拓扑采用了VXLAN分布式网关,SW1上的VBDIF10配置了:arp-proxy local enable命令,则以下描述中正确的有哪些项? A、SW1收到PC1发往PC2的报文&…

【计算机组成原理·笔记】总线控制

总线控制 总线上连接多个部件,为了解决: 什么时候由哪个部件发送信息如何给信息传送定时如何防止信息丢失如何避免多个部件同时发送如何规定接受信息的部件 等一些列问题,需要总线控制线进行统一管理,这就是总线控制&#xff0…