【GD32】F330 串口只能返回00的问题记录

最开始借助正点原子的视频教程在STM32mini板上跑通了串口的字节收发,但在移植程序到GD32的过程中遇到了一个bug:在b站找了GD32的串口教程手敲代码,却跟演示效果不一致,在while(1)循环里给上位机发送数据,虽然PC能够接收到USART发送来的数据,但勾选“HEX"显示的只有"00"。

排错的时候以为是串口收发代码的细节被自己敲漏了,但比对网上搜索的多份字节、字符串收发代码发现应该不是这里的问题。

试了一天之后才发现是自己的串口初始化配置出错——未设置成“复用”。

修改后针对使用的GD32F330RBT6代码如下:

    /* USART0 GPIO config */

    gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_9);

    gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_10);

    //推挽复用输出

    gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_9 | GPIO_PIN_10);

    gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9 | GPIO_PIN_10);        


**ERROR**

原先的错误记录如下:

        //设置TX为推挽输出

       gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,GPIO_PIN_9);

       gpio_output_options_set(GPIOA,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_9);

     

     //设置RX为浮空输入

      gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE,GPIO_PIN_10);   

      gpio_output_options_set(GPIOA,GPIO_PUPD_PULLUP,GPIO_OSPEED_50MHZ,

                                                                                                                  GPIO_PIN_10);

         

        

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值