下载个STM32CUBEMX进行图形化配置很方便。
要不你可以看看ST的UART例程,无非注意外设时钟、管脚配置的确认及
调整。cube库里配置如下:
/* Put the USART peripheral in the Asynchronous mode (UART Mode) */
/* UART configured as follows:
- Word Length = 8 Bits (7 data bit + 1 parity bit) : BE CAREFUL : Program 7 data bits + 1 parity bit in PC HyperTerminal
- Stop Bit = One Stop bit
- Parity = ODD parity
- BaudRate = 9600 baud
- Hardware flow control disabled (RTS and CTS signals) */
UartHandle.Instance = USARTx;
UartHandle.Init.BaudRate = 9600;
UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
UartHandle.Init.StopBits = UART_STOPBITS_1;
UartHandle.Init.Parity = UART_PARITY_ODD;
UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UartHandle.Init.Mode = UART_MODE_TX_RX;
if (HAL_UART_Init(UartHandle) != HAL_OK)
{
/* Initialization Error */
Error_Handler();
}
串口1和串口2的时钟是挂在不同总线上的,这点要注意。 你可以先用软件查询的方式,看看串口2是否正常工作。
注意初始化是否正确!没有进入中断应注意中断使能位是否已经配置还,如果是根据别的代码修改的话还要注意:
1、GPIO口时钟的使能和GPIO口模式的配置。
2、USART模块时钟的使能。
3、NVIC中断通道和优先级相关的配置!!!
能发送数据说明1、2应该是没问题的吧,如果第3点没有注意到的话是不会发生中断!!!
除了同步UART,也就是模式0。异步UART的模式1,2,3都是带有停止位的,51只支持停止位为1,手册里面就没有介绍怎么配置,是因为根本就不能配置,不是说没有停止位。方式2和方式3的一帧数据是9bit,前8bit是你的数据,第9bit是奇偶校验位或者多机通信的标志位,如果你想用方式1发送,方式2接收,只要按照手册的说明,把SM
=
0设置好了就行了,SM
=
0就是告诉单片机你现在处于接收的状态,然后在接收中断程序中记得软件清零RI(接收中断标志)
本文标签:stm32f103串口2和串口3配置