打印
[其它应用]

中颖SH32F9B00 串口案例

[复制链接]
1622|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

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

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



使用特权

评论回复
沙发
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 初始化为输出高电平,防止对方接收被误触发。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

1549

帖子

2

粉丝