沁恒CH585的串口通讯
沁恒CH585是沁恒公司自主研发的基于青稞RISC-V内核系列芯片,以BLE无线通讯,NFC,USB通讯为主,但今天我们先调试一下其串口,在后面的调试其它外设时可以做为调试结果,日志输出使用。
我们本次选择Usart1外设,它的引脚是PA8和PA9。

接下我们软件初始化串口配置。
首先配置GPIO配置:
/* 配置串口1:先配置IO口模式,再配置串口 */
GPIOA_SetBits(GPIO_Pin_9);
GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU); // RXD-配置上拉输入
GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); // TXD-配置推挽输出,注意先让IO口输出高电平
接下来再配置Usart的配置
UART1_DefInit(); /* initial uart1 with 115200bps
我们直接调试此API,如果有其它波特率的配置的话,调用 void UART0_BaudRateCfg(uint32_t baudrate)即可。
配置完成之后,就可以调用 void UART0_SendString(uint8_t *buf, uint16_t l)函数来输出串口数据。测试源代码如下:
int main()
{
uint8_t len;
HSECFG_Capacitance(HSECap_18p);
SetSysClock(CLK_SOURCE_HSE_PLL_62_4MHz);
GPIOA_SetBits(GPIO_Pin_9);
GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU); // RXD-配置上拉输入
GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); // TXD-配置推挽输出,注意先让IO口输出高电平
UART1_DefInit();
UART1_SendString(uart_inst.txbuf, uart_inst.txbuf.tx_len);
}
这里要提示一下,官方代码库中的 UART1_SendString字面意义是发送字符串,但其实其只是发送一定数据长度,其实现并没有字符串的判尾操作,所以,发送长度才是结束发送的关键参数。