[其它应用] 中颖SH32F9B00 串口案例

[复制链接]
3649|6
 楼主| 小夏天的大西瓜 发表于 2023-3-21 21:07 | 显示全部楼层 |阅读模式

功能:使用 UART1 在 PB8/TXD1、PB9/RXD1 上进行串口收发,上位机通过 UART1 连接 SH32F9B00,
上位机每发送 1 字节,SH32F9B00 接收后把该字节加 0x11 再反馈给上位机,波特率 9600Bps,8/1/1/none
模式。
说明:
(1)初始化 UART 前初始化 IO,主要设置:RXD 引脚上拉电阻,切 AF 功能为 UART 功能。
(2)TXD1 初始化为输出高电平,防止对方接收被误触发。
代码:

  1. #include <SH32F9B00.H>
  2. void main(void)
  3. {
  4. unsigned char rcv_byte;
  5. RCC->RCCLOCK = 0x33CC; // unlock RCC config
  6. APB0_CFG-> RCCLOCK = 0x33CC; // unlock APB0 config
  7. RCC->AHBENR.BIT.GPIOEN = 1; // 打开 GPIO 模块时钟
  8. RCC->AHBENR.BIT.SYSCFGEN = 1; // 打开 SYSCFG 模块时钟(SWJ 复用)
  9. APB0_CFG ->APB0ENR.BIT.UART1EN = 1; // 打开 UART1 时钟
  10. RCC->RCCLOCK = 0x0; // lock RCC config
  11. APB0_CFG->RCCLOCK = 0x0; // lock APB0 config
  12. GPIOB_CFG->LCKR.V32 = 0x5AA50000; // unlock PB config
  13. GPIOB->ODR |= 0x0100; // set PB8 = 1
  14. GPIOB_CFG->PUPDR.BIT.PUPDR9 = 1; // set PB9 pull-up
  15. GPIOB_CFG->AFRH.BIT.AFR9 = 7; // PB9 映射到 RXD1
  16. GPIOB_CFG->AFRH.BIT.AFR8 = 7; // PB8 映射到 TXD1
  17. GPIOB_CFG->LCKR.V32 = 0x5AA5FFFF; // lock PA config
  18. UART1->BRT.BIT.SBRT = 194; // 设置波特率为 9.6KBps,30M/16/9.6K=195.3125
  19. UART1->BRT.BIT.BFINE = 5; // 0.3125*16=5
  20. UART1->CR.BIT.SM = 1; // type 1: 8/1/1/none, variable baud rate
  21. UART1->CR.BIT.SBRTEN = 1; // enable baud rate generation
  22. UART1->CR.BIT.TEN = 1; // enable txd
  23. UART1->CR.BIT.REN = 1; // enable rxd
  24. SH32F9B00 应用指南
  25. while(1) // main loop
  26. {
  27. if(UART1->FR.BIT.RI == 1) // check RI flag
  28. {
  29. rcv_byte = UART1->RDR; //receive data, RI auto clean
  30. if(UART1->FR.BIT.TI == 1) //check TI flag
  31. {
  32. UART1->TDR = rcv_byte+0x11; //send data
  33. }
  34. }
  35. }
  36. }



OKAKAKO 发表于 2023-11-12 19:20 | 显示全部楼层
串口程序能够直接使用
中国龙芯CDX 发表于 2023-11-12 19:34 | 显示全部楼层
使用 UART1 在 PB8/TXD1、PB9/RXD1 上进行串口收发
szt1993 发表于 2023-11-12 20:21 | 显示全部楼层
(1)初始化 UART 前初始化 IO,主要设置:RXD 引脚上拉电阻,切 AF 功能为 UART 功能。
(2)TXD1 初始化为输出高电平,防止对方接收被误触发。
绒兔星球 发表于 2025-8-30 15:05 | 显示全部楼层
中颖 SH32F9B00 串口案例:初始化时配置 UART 时钟,设置波特率(如 115200)、数据位、停止位和校验位;使能收发中断,配置 GPIO 复用为串口引脚。发送时写数据到发送寄存器;接收用中断方式,在服务程序中读取接收数据并处理,需清除中断标志,可加校验确保数据正确。
樱花树维纳斯 发表于 2025-9-8 18:06 | 显示全部楼层
中颖 SH32F9B00 串口案例可实现上位机与芯片的串口通信。通过配置 UART1,设置波特率为 9600Bps,8 位数据位、1 位停止位、无校验位,使能收发功能。上位机发送 1 字节数据,芯片接收后加 0x33 再反馈给上位机。
迷雾隐者 发表于 2025-9-15 19:29 | 显示全部楼层
波特率设置为9600Bps,这个速度对于大多数应用来说已经足够了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

273

主题

2390

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部