首先开启RCC:
然后:开启串口,参数默认:波特率115200,8位数据位,1位停止位,无校验位
然后:配置时钟
最后:生成代码配置
生成代码:
Keil5中:添加代码:
在usart.c中添加
第一步:
/* USER CODE BEGIN 1 */
int fputc(int ch,FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
/* USER CODE END 1 */
并添加头文件#include<stdio.h>
第二步:
然后尝试用串口打印字符串
在main.c中
/* USER CODE BEGIN 2 */
printf("printf(CubeMAX Pro Test:)
");
/* USER CODE END 2 */
烧写验证
第三步:
串口打印冲串口发送的数据
首先:打开串口中断(其他操作一样)
然后:在main.c开头定义两个数组
/* USER CODE BEGIN PV */
uint8_t RxBuf[20];
uint8_t TxBuf[]="这是要发送的字符串:
";
/* USER CODE END PV */
然后:HAL_UART_Receive_IT我理解是相当于开启接收中断,接收够10字符就触发接收中断
/* USER CODE BEGIN 2 */
printf("printf(CubeMAX Pro Test:)
");
//HAL_UART_Transmit_IT(&huart1, (uint8_t *)TxBuf, sizeof(TxBuf));
HAL_UART_Transmit(&huart1, (uint8_t *)&TxBuf, 10, 0xFFFF);
HAL_UART_Receive_IT(&huart1, (uint8_t *)RxBuf, 10);
/* USER CODE END 2 */
最后在main.c中重构接收完成中断的回调函数
/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
/* Prevent unused argument(s) compilation warning */
UNUSED(huart);
HAL_UART_Transmit(&huart1, (uint8_t *)&RxBuf, 10, 0xFFFF);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_UART_RxCpltCallback can be implemented in the user file.
*/
}
/* USER CODE END 4 */
最后:下载验证