最近赶上电赛,为了驱动串口屏,同时方便调试,所以尝试着用串口2来为串口屏发送数据,串口1用于显示数据来进行调试
如图是STM32F407的串口引脚分布图
F407 系统控制器有四个 USART 和两个 UART,其中USART1和USART2时钟来源于 APB2 总线时钟,其最大频率为 84MHz,其他四个的时钟来源于 APB1 总线时钟,其最大频率为 42MHz。UART 只是异步传输功能,所以没有 SCLK、nCTS 和 nRTS 功能引脚。
工程的建立
这里我选择了串口1,2并且都将他们的通讯方式都设置为了Asynchronous
异步通讯


并且将他们的串口中断都打开
接着生成代码即可
串口发送代码
由于我这里是为了在串口屏幕上画曲线,而每个数据的结尾是以三个0xff来结尾的,这里就可以先把三个0xff定义为一个数组
/* USER CODE BEGIN 2 */
uint8_t HexEnd[] = {0xff, 0xff, 0xff};
uint8_t aTxBuffer[100] = "add 1,0,100";
/* USER CODE END 2 */
之后可以利用串口2来显示我发送的字符串,利用串口1来为串口屏传输数据
HAL_UART_Transmit(&huart1,aTxBuffer,strlen((char*)aTxBuffer),0xFFFF);
HAL_UART_Transmit(&huart1,HexEnd,strlen((char*)HexEnd),0xFFFF);
HAL_UART_Transmit(&huart2,aTxBuffer,strlen((char*)aTxBuffer),0xFFFF);
HAL_UART_Transmit(&huart2,HexEnd,strlen((char*)HexEnd),0xFFFF);
HAL_Delay(100);
这里的格式已经较标准了,以后可以利用此来作为参考
结果
串口助手已经正确的显示出来了
串口屏也已经正确的显示出来了
之后再利用DAC输出正弦波来采集吧