hc32l130j8ta串口例程
时间: 2023-07-23 15:39:53 浏览: 282
以下是 HC32L130J8TA 的串口发送和接收例程:
发送代码:
```c
#include "hc32l130.h"
#define USART_INSTANCE USART1
int main(void)
{
// 使能外设时钟
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
Sysctrl_SetPeripheralGate(SysctrlPeripheralM4Clock, TRUE);
Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1, TRUE);
// 配置 GPIO
Gpio_InitIOExt(GPIO_PORT_4, GPIO_PIN_3, GpioDirOut, GpioDrvLevel3);
Gpio_SetAfMode(GPIO_PORT_4, GPIO_PIN_2, GpioAf2); // UART1_RX
Gpio_SetAfMode(GPIO_PORT_4, GPIO_PIN_3, GpioAf2); // UART1_TX
// 配置串口
stc_uart_config_t stcConfig;
stcConfig.enRunMode = UartMode1; // 模式1
stcConfig.u32Baudrate = 9600; // 波特率
stcConfig.enDataLength = UartDataLength8; // 数据位8位
stcConfig.enParity = UartParityNone; // 无奇偶校验
stcConfig.enStopBit = UartStopBit1; // 停止位1位
stcConfig.enSamplingMode = UartSingleSampling; // 单次采样
if (Ok != Uart_Init(USART_INSTANCE, &stcConfig))
{
while (1)
{
;
}
}
while (1)
{
Uart_SendData(USART_INSTANCE, 'H');
Uart_SendData(USART_INSTANCE, 'e');
Uart_SendData(USART_INSTANCE, 'l');
Uart_SendData(USART_INSTANCE, 'l');
Uart_SendData(USART_INSTANCE, 'o');
Uart_SendData(USART_INSTANCE, '\r');
Uart_SendData(USART_INSTANCE, '\n');
delay_ms(1000);
}
}
```
接收代码:
```c
#include "hc32l130.h"
#define USART_INSTANCE USART1
int main(void)
{
// 使能外设时钟
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
Sysctrl_SetPeripheralGate(SysctrlPeripheralM4Clock, TRUE);
Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1, TRUE);
// 配置 GPIO
Gpio_InitIOExt(GPIO_PORT_4, GPIO_PIN_3, GpioDirOut, GpioDrvLevel3);
Gpio_SetAfMode(GPIO_PORT_4, GPIO_PIN_2, GpioAf2); // UART1_RX
Gpio_SetAfMode(GPIO_PORT_4, GPIO_PIN_3, GpioAf2); // UART1_TX
// 配置串口
stc_uart_config_t stcConfig;
stcConfig.enRunMode = UartMode1; // 模式1
stcConfig.u32Baudrate = 9600; // 波特率
stcConfig.enDataLength = UartDataLength8; // 数据位8位
stcConfig.enParity = UartParityNone; // 无奇偶校验
stcConfig.enStopBit = UartStopBit1; // 停止位1位
stcConfig.enSamplingMode = UartSingleSampling; // 单次采样
if (Ok != Uart_Init(USART_INSTANCE, &stcConfig))
{
while (1)
{
;
}
}
while (1)
{
uint8_t u8Data;
if (Ok == Uart_ReceiveData(USART_INSTANCE, &u8Data, 1, 0xFFFF))
{
if (u8Data == 'H')
{
Uart_SendData(USART_INSTANCE, 'O');
Uart_SendData(USART_INSTANCE, 'K');
Uart_SendData(USART_INSTANCE, '\r');
Uart_SendData(USART_INSTANCE, '\n');
}
}
}
}
```
注意,以上代码需要配合 HC32L130J8TA 的库文件来编译运行。
阅读全文