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

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

[复制链接]
  • TA的每日心情
    开心
    2024-4-15 13:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    10

    主题

    37

    回帖

    183

    积分

    注册会员

    积分
    183
    发表于 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;
    }


    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 97 天

    [LV.6]常住居民II

    9

    主题

    556

    回帖

    817

    积分

    高级会员

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

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-15 13:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    10

    主题

    37

    回帖

    183

    积分

    注册会员

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

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

    点评

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

    使用道具 举报

  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 128 天

    [LV.7]常住居民III

    26

    主题

    1290

    回帖

    4007

    积分

    论坛元老

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

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-15 13:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    10

    主题

    37

    回帖

    183

    积分

    注册会员

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

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

    使用道具 举报

  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 128 天

    [LV.7]常住居民III

    26

    主题

    1290

    回帖

    4007

    积分

    论坛元老

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

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

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-15 13:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    10

    主题

    37

    回帖

    183

    积分

    注册会员

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

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 12:13
  • 签到天数: 51 天

    [LV.5]常住居民I

    2

    主题

    148

    回帖

    191

    积分

    注册会员

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

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

    使用道具 举报

  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 56 天

    [LV.5]常住居民I

    2

    主题

    526

    回帖

    677

    积分

    高级会员

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

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

    使用道具 举报

  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 128 天

    [LV.7]常住居民III

    26

    主题

    1290

    回帖

    4007

    积分

    论坛元老

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

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-4-30 19:51 , Processed in 0.071795 second(s), 65 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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