根据hc32l13x官网现有历程,编写串口使用RCH时钟
时间: 2024-03-21 09:41:23 浏览: 144
以下是使用HC32L13X内部RCH时钟的串口初始化示例代码:
```c
#include "hc32l13x.h"
#define UART_RX_PORT GpioPortA
#define UART_RX_PIN GpioPin2
#define UART_TX_PORT GpioPortA
#define UART_TX_PIN GpioPin3
void UART_Init(void)
{
// 使能系统时钟和GPIO时钟
CLK_FcgPeriphClockCmd(CLK_FcgPeriphGpio, Enable);
CLK_FcgPeriphClockCmd(CLK_FcgPeriphUart0, Enable);
// GPIO 端口配置
Gpio_InitIOExt(UART_RX_PORT, UART_RX_PIN, GpioDirModeIn, TRUE, FALSE, FALSE, FALSE);
Gpio_InitIOExt(UART_TX_PORT, UART_TX_PIN, GpioDirModeOut, TRUE, FALSE, FALSE, FALSE);
Gpio_SetAfMode(UART_RX_PORT, UART_RX_PIN, GpioAfMode1);
Gpio_SetAfMode(UART_TX_PORT, UART_TX_PIN, GpioAfMode1);
// UART 配置
M0P_UART0->SCON = 0x50; // 8位数据,无校验,1位停止位
M0P_UART0->SADDR = 0x00; // 地址检测禁止
M0P_UART0->SFDTH = 0x00; // 发送帧定时器高位
M0P_UART0->SFDTL = 0x0d; // 发送帧定时器低位
M0P_UART0->SCFQ = 15; // 波特率 = 8000000 / (15 * (SCFQ + 1))
M0P_UART0->SCON |= 0x01; // 使能 UART 发送和接收
}
```
在以上示例代码中,我们使用 `CLK_FcgPeriphClockCmd()` 函数使能系统时钟和GPIO时钟。接下来,我们使用 `Gpio_InitIOExt()` 函数配置GPIO端口,使用 `Gpio_SetAfMode()` 函数设置GPIO的复用功能为UART模式。最后,使用 `M0P_UART0` 寄存器配置UART参数,包括数据位,校验位,停止位,波特率等,并打开UART发送和接收功能。
需要注意的是,由于使用了HC32L13X内部RCH时钟,所以需要根据实际情况设置合适的波特率分频系数。在以上示例代码中,我们设置波特率分频系数为15,这意味着UART的波特率为8000000 / (15 * (SCFQ + 1))。如果您的系统时钟频率不同,需要根据实际情况调整波特率分频系数。
阅读全文