最近学习开发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进行重映射。