找回密码
 立即注册
查看: 597|回复: 10

一箭双雕串口波特率问题[已解决]

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-30 20:18:10

11

主题

45

回帖

236

积分

中级会员

积分
236
发表于 2024-4-15 09:33:53 | 显示全部楼层 |阅读模式
本帖最后由 firefly2k 于 2024-4-15 13:24 编辑

请教下,我用的一箭双雕的例程

我修改了工作模式,在初始进入时,并不进入一箭双雕的工作模式。只有在收到特殊指令后,才进入。

现在的问题是,我初始进入不设置波特率,用一箭双雕默认的波特率初始化值,如下(应该是115200),但我实际收发时怎么发现波特率实际是9600呢?可能是什么原因?如何设置为115200波特率?
注:烧录时的主频设置与程序内部定义是一致的,都是24MHz

主程序部分:

sys_init();
uart_init();
timer_init();
usb_init();
EA = 1;

            
hmi_mode_id = 0;        //正常模式
        
while (1)
{
     if(hmi_mode_id)        uart_polling();
     if(f1s)

    {
         f1s = 0;
         printf("1 Sec\r\n");
     }
}

                                


void uart_init()
{
    SCON = 0x50;
    TMOD &= ~0xf0;
    TL1 = BR(MAIN_Fosc,115200);
    TH1 = BR(MAIN_Fosc,115200) >> 8;
    AUXR |= T1x12;
    TR1 = 1;
    ES = 1;


    S2CON = 0x50;
    T2L = BR(MAIN_Fosc,115200);
    T2H = BR(MAIN_Fosc,115200) >> 8;
    AUXR |= T2x12;
    AUXR |= T2R;
    IE2 |= ES2;
        
    LineCoding1.dwDTERate = REV4(115200);
    LineCoding1.bCharFormat = 0;
    LineCoding1.bParityType = 0;
    LineCoding1.bDataBits = 8;


    LineCoding2.dwDTERate = REV4(115200);
    LineCoding2.bCharFormat = 0;
    LineCoding2.bParityType = 0;
    LineCoding2.bDataBits = 8;
   
    Uart1TxBusy = 0;
    Uart1RxRptr = 0;
    Uart1RxWptr = 0;
    Uart1TxRptr = 0;
    Uart1TxWptr = 0;
}


回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:453
  • 最近打卡:2025-05-02 08:15:40
已绑定手机

13

主题

1257

回帖

2975

积分

金牌会员

积分
2975
发表于 2024-4-15 10:07:55 | 显示全部楼层
51的库函数没用过,看着晕
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-30 20:18:10

11

主题

45

回帖

236

积分

中级会员

积分
236
发表于 2024-4-15 10:21:55 | 显示全部楼层
21cns*** 发表于 2024-4-15 10:07
51的库函数没用过,看着晕

这里一个库函数也没有呀,都是给的例程里的函数

点评

呵呵,看错了,void uart_init()中的结构体赋值看成库函数了  发表于 2024-4-15 11:10
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2024-4-15 11:10:39 | 显示全部楼层
一箭双雕的例程可以根据串口助手设置的波特率自动修改串口波特率。
串口助手设置9600波特率,MCU就会切换串口波特率为9600。
串口助手设置115200波特率,MCU就会切换串口波特率为115200。
波特率修改可以参考uart_set_baud函数
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-30 20:18:10

11

主题

45

回帖

236

积分

中级会员

积分
236
发表于 2024-4-15 13:12:26 | 显示全部楼层
本帖最后由 firefly2k 于 2024-4-15 13:21 编辑
乘风*** 发表于 2024-4-15 11:10
一箭双雕的例程可以根据串口助手设置的波特率自动修改串口波特率。
串口助手设置9600波特率,MCU就会切换串 ...

谢谢,试过了,确实是。我开始是用别的串口助手改波特率发现不行。看了您说的后,我在STC串口助手中改了后,就可以了。也就是自动切换波特率只支持STC的串口助手
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2024-4-15 13:47:12 | 显示全部楼层
firef*** 发表于 2024-4-15 13:12
谢谢,试过了,确实是。我开始是用别的串口助手改波特率发现不行。看了您说的后,我在STC串口助手中改了后 ...

STC的串口助手功能比较强大,除了传统串口通信外,还可以支持USB-CDC虚拟串口,打开串口或者在串口助手里修改波特率后会回传波特率、校验位等设置到MCU。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-30 20:18:10

11

主题

45

回帖

236

积分

中级会员

积分
236
发表于 2024-4-15 14:58:03 | 显示全部楼层
乘风*** 发表于 2024-4-15 13:47
STC的串口助手功能比较强大,除了传统串口通信外,还可以支持USB-CDC虚拟串口,打开串口或者在串口助手里 ...

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:246
  • 最近打卡:2025-04-30 10:10:32

3

主题

155

回帖

537

积分

高级会员

积分
537
发表于 2024-4-16 17:34:26 | 显示全部楼层
firef*** 发表于 2024-4-15 13:12
谢谢,试过了,确实是。我开始是用别的串口助手改波特率发现不行。看了您说的后,我在STC串口助手中改了后 ...

那要是别的软件还麻烦了,要是通用就方便了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-02 07:55:56
已绑定手机

19

主题

3191

回帖

4872

积分

论坛元老

积分
4872
发表于 2024-4-16 19:22:38 来自手机 | 显示全部楼层
乘风飞扬 发表于 2024-4-15 11:10
一箭双雕的例程可以根据串口助手设置的波特率自动修改串口波特率。
串口助手设置9600波特率,MCU就会切换串 ...

波特率是不是自适配,还是只有使用stc串口助手才能自己切换。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2024-4-16 19:29:35 | 显示全部楼层
so*** 发表于 2024-4-16 19:22
波特率是不是自适配,还是只有使用stc串口助手才能自己切换。

支持USB-CDC虚拟串口的串口助手才会回传配置参数给设备,设备才能进行自适应切换。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 20:23 , Processed in 0.144076 second(s), 115 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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