找回密码
 立即注册
查看: 120|回复: 3

我用官方的库函数如何配置串口先发高位还是先发低位?

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-11-05 11:07:13
已绑定手机

12

主题

19

回帖

126

积分

注册会员

积分
126
发表于 2025-11-5 11:07:13 | 显示全部楼层 |阅读模式
我用官方的库函数如何配置串口先发高位还是先发低位?我尝试用寄存器配置,但是没有成功,

芯片是:STC8A8K64D4 。

我的代码是:
  1. ///////////////////////////////////////////////////
  2. /******************* IO配置函数 *******************/
  3. void        UART4_GPIO_config(void)
  4. {
  5.         GPIO_InitTypeDef        GPIO_InitStructure;                //结构定义
  6.         GPIO_InitStructure.Pin  = GPIO_Pin_2 | GPIO_Pin_3;                //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
  7.         GPIO_InitStructure.Mode = GPIO_PullUp;        //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
  8.         GPIO_Inilize(GPIO_P0,&GPIO_InitStructure);        //初始化
  9. }
  10. /***************  串口初始化函数 *****************/
  11. void        UART4_config(void)
  12. {
  13.         
  14.         
  15.         COMx_InitDefine                COMx_InitStructure;                                        //结构定义
  16.         COMx_InitStructure.UART_Mode      = UART_8bit_BRTx;                //模式,   UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
  17.         COMx_InitStructure.UART_BRT_Use   = BRT_Timer4;                        //选择波特率发生器,   BRT_Timer2, BRT_Timer4 (注意: 串口2固定使用BRT_Timer2)
  18.         COMx_InitStructure.UART_BaudRate  =16384ul;//16393ul;                        115200; //波特率,     110 ~ 115200
  19.         COMx_InitStructure.UART_RxEnable  = ENABLE;                                //接收允许,   ENABLE或DISABLE
  20.         UART_Configuration(UART4, &COMx_InitStructure);                //初始化串口4 UART1,UART2,UART3,UART4
  21.         NVIC_UART4_Init(ENABLE,Priority_1);                //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
  22.         UART4_SW(UART4_SW_P02_P03);                //UART4_SW_P02_P03,UART4_SW_P52_P53
  23.          // 关键配置:设置数据发送顺序为MSB优先(高位先发)
  24. //    PCON |= 0x80;   // SMOD0=1 → MSB First
  25.         
  26.         // 关键配置:设置数据发送顺序为LSB优先(低位先发)
  27.     PCON &= ~0x80;  // SMOD0=0 → LSB First(默认)
  28. }
复制代码



回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:649
  • 最近打卡:2025-12-20 00:06:24
已绑定手机

93

主题

6951

回帖

1万

积分

超级版主

积分
13052
发表于 2025-11-5 11:47:56 | 显示全部楼层
串口固定先发低位,可软件字节内按位倒序
截图202511051146548997.jpg
截图202511051147146956.jpg
截图202511051147242008.jpg
截图202511051147377344.jpg
截图202511051147507873.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-11-05 11:07:13
已绑定手机

12

主题

19

回帖

126

积分

注册会员

积分
126
发表于 2025-11-5 13:24:04 | 显示全部楼层
Debu*** 发表于 2025-11-5 11:47
串口固定先发低位,可软件字节内按位倒序

串口默认是低位在前?那如何用代码配置为高位在前呢?

点评

这是硬件决定的,无法用软件修改  详情 回复 发表于 2025-11-5 14:39
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:649
  • 最近打卡:2025-12-20 00:06:24
已绑定手机

93

主题

6951

回帖

1万

积分

超级版主

积分
13052
发表于 2025-11-5 14:39:40 | 显示全部楼层
代码*** 发表于 2025-11-5 13:24
串口默认是低位在前?那如何用代码配置为高位在前呢?

这是硬件决定的,无法用软件修改
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-12-21 08:39 , Processed in 0.115935 second(s), 63 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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