打印
[AT32F403/403A]

关于AT32F403A使用RTThread的驱动时,串口复用问题怎么解决呢?

[复制链接]
919|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
使用的时AT32F403AVGT的主控,使用的时RTThread Studio编程环境,关于串口端口复用的问题,使用了rtthread的驱动程序。硬件上UART3使用了PC10,PC11端口,但是发现官方的驱动并没有支持这个端口,于是修改了驱动,修改部分如下:
        /* usart3 configure */
        { .pin_index = GET_PIN(B, 10), .normal_uart =  3, .remap_uart = -1 },
        { .pin_index = GET_PIN(B, 11), .normal_uart =  3, .remap_uart = -1 },
        { .pin_index = GET_PIN(C, 10),  .normal_uart = -1, .remap_uart =  3 },
        { .pin_index = GET_PIN(C, 11),  .normal_uart = -1, .remap_uart =  3 },

        /* uart4 configure */
        //{ .pin_index = GET_PIN(C, 10), .normal_uart =  4, .remap_uart = -1 },
        //{ .pin_index = GET_PIN(C, 11), .normal_uart =  4, .remap_uart = -1 },
        { .pin_index = GET_PIN(A, 0),  .normal_uart = -1, .remap_uart =  4 },
        { .pin_index = GET_PIN(A, 1),  .normal_uart = -1, .remap_uart =  4 },

此时的问题就是需要屏蔽uart4的PC10,PC11端口,才能正常工作,对于这个问题,请问一下各位还有什么好的办法吗?

使用特权

评论回复
评论
xu@xupt 2023-9-17 08:45 回复TA
很好的资源,学习啦~~ 
沙发
sheltonyu| | 2023-4-26 09:55 | 只看该作者
本帖最后由 sheltonyu 于 2023-4-26 09:58 编辑

你好,uart3/uart4在硬件上确实都支持PC10 PC11脚,但因为rtt studio串口pin脚初始化方式的关系,其pin脚是通过传入脚名再循环查表的方法找到对应脚位的串口号及remap情况,这样的方式不支持脚名重复。所以在进行pin脚分配时就进行了取舍,因uart3有3组可用,uart4仅有2组可用,所以就折中的将pc10/pc11给到了uart4,这样驱动上就能保证uart3/uart4都能有两组可用。
如果uart3确实需要使用pc10/pc11时,也可修改一下代码来实现,修改方式:
1.对应修改uart3的pd8/pd9脚位为pc10/pc11(你代码已贴出来)
2.uart3 remap配置需要修改为gpio_pin_remap_config(USART3_MUX_01, TRUE);
注:这样修改后最好就把uart4的pc10/pc11屏蔽,或者不开启uart4,防止pin脚被抢占。

a.PNG (54.75 KB )

a.PNG

使用特权

评论回复
板凳
fattyhuang|  楼主 | 2023-4-26 10:06 | 只看该作者
sheltonyu 发表于 2023-4-26 09:55
你好,uart3/uart4在硬件上确实都支持PC10 PC11脚,但因为rtt studio串口pin脚初始化方式的关系,其pin脚是 ...

谢谢您的回复,目前就是这么做的,主要看还有其他办法没。看来只有这样了

使用特权

评论回复
地板
duo点| | 2023-9-20 16:06 | 只看该作者
参考AT32F403A和RTThread的文档吧

使用特权

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

本版积分规则

7

主题

30

帖子

0

粉丝