STM8L USART串口调试

最近学习开发STM8 MCU,,刚入手这颗MCU,对很多功能不太了解,只能一边开发一边学习,记录一下学习过程,如有错误的地方,敬请指正。

MCU:STM8L151K4
环境:IAR FOR STM8

因项目需求,需要调试USART功能,刚开始时候手里没有原理图,只有板子和datasheet,从datesheet上看到USART RX TX管脚为PC2 PC3.
这里写图片描述
于是便直接配置PC2 PC3,然后进行初始化,但是代码跑起来一直没有接收到MCU发送出去的数据,查看代码和datasheet,然后网上查找资料,发现USART有remappin功能,将PC3 PC2 映射到PA2 PA3上,
这里写图片描述
于是便询问硬件,确定板子上的USART硬件管脚为PA2 PA3,于是重新配置相关代码,重映射管脚,测试ok.

虽然浪费了点时间,但是还是有些收获的。

部分代码如下:

#define USART_TX_PORT GPIOA
#define USART_RX_PORT GPIOA

#define USART_TX_PINS GPIO_Pin_2
#define USART_RX_PINS GPIO_Pin_3


void uart_gpio_init()
{
    GPIO_Init(USART_TX_PORT,USART_TX_PINS, GPIO_Mode_Out_PP_Low_Fast);

    GPIO_Init(USART_RX_PORT,USART_RX_PINS, GPIO_Mode_In_PU_No_IT);
}

void uart_init(void)
{
    uart_gpio_init();   

    CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE);

    //remapping
    SYSCFG_REMAPPinConfig(REMAP_Pin_USART1TxRxPortA,ENABLE);

    USART_DeInit(USART1);

    /* UART1 configuration ------------------------------------------------------*/
    /* UART1 configured as follow: - USARTx = 1 - BaudRate = 9600baud - USART_WordLength = 8 Bits - One Stop Bit - No parity - Receive and transmit enabled */
    USART_Init(USART1, (uint32_t)9600, USART_WordLength_8b, USART_StopBits_1, USART_Parity_No,  (USART_Mode_TypeDef)(USART_Mode_Tx | USART_Mode_Rx));

    USART_Cmd(USART1, ENABLE);
}

如果USART硬件直接接到PC2 PC3上,就不需要SYSCFG_REMAPPinConfig进行重映射。

本站公众号
   欢迎关注本站公众号,获取更多程序园信息
开发小院