串口使用M0P方式,RCH使用stc_sysctrl_clk结构体,实现串口使用内部时钟
时间: 2023-07-20 19:44:10 浏览: 90
好的,使用stc_sysctrl_clk结构体配置RCH时钟源来实现串口使用内部时钟的步骤如下:
1. 配置系统时钟源为内部时钟。可以使用stc_sysctrl_clk结构体实现,如下所示:
```c
#include "hc32f003_sysctrl.h"
#include "hc32f003_uart.h"
stc_sysctrl_clk_config_t stcCfgClkCfg;
stc_sysctrl_rch_config_t stcCfgRchCfg;
stcCfgClkCfg.enClkSrc = SysctrlClkRCH;
stcCfgClkCfg.enHClkDiv = SysctrlHclkDiv1;
stcCfgClkCfg.enPClkDiv = SysctrlPclkDiv1;
Sysctrl_ClkInit(&stcCfgClkCfg);
stcCfgRchCfg.enFreq = SysctrlRchFreq22M;
Sysctrl_RCH_Init(&stcCfgRchCfg);
Sysctrl_SetRCHTrim(SysctrlRchFreq22M);
Sysctrl_ClkSourceEnable(SysctrlClkRCH, TRUE);
PWC_Fcg1PeriphClockCmd(PWC_FCG1_PERIPH_UART0, Enable);
```
2. 配置串口的波特率、数据位、停止位、校验位等参数。可以使用Uart_Init函数实现,如下所示:
```c
stc_uart_cfg_t stcCfg;
stcCfg.enRunMode = UartMode1;
stcCfg.enStopBit = Uart1bit;
stcCfg.enMmdorCk = UartMmdor;
stcCfg.enSck = UartSckEnable;
stcCfg.u32Baudrate = 9600;
stcCfg.enDataLength = Uart8bit;
stcCfg.enParity = UartParityNone;
Uart_Init(UARTCH0, &stcCfg);
```
3. 开启串口发送和接收中断。可以使用Uart_EnableIrq函数实现,如下所示:
```c
Uart_EnableIrq(UARTCH0, UartRxIrq);
Uart_EnableFunc(UARTCH0, UartRx);
EnableNvic(UART0_IRQn, IrqLevel3, TRUE);
```
以上是使用M0P方式,使用stc_sysctrl_clk结构体配置RCH时钟源来实现串口使用内部时钟的步骤。希望能对你有所帮助!
阅读全文