[STM32WB] 【STM32WB09KE】学习记录二:调试板载的串口1输出

[复制链接]
 楼主| 聪聪哥哥 发表于 2024-11-24 08:41 | 显示全部楼层 |阅读模式
<
本帖最后由 聪聪哥哥 于 2024-11-24 08:45 编辑

今天和大家分享一下,学习STM32WB串口通讯的学习过程;一:硬件准备:查看原理图,确定下板载串口引脚接入的具体位置;
349676742712180aed.png
二:打开cube软件配置,串口的基本参数:
927256742715b2df96.png
这里使用的是串口1,将串口的中断使能打开,直接点击“generate code”,底层驱动给你就配置完成了,其他的参数就不需要配置了
代码编写的基本流程:
l首先串口时钟使能,GPIO时钟使能:    __HAL_RCC_USART1_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();
lGPIO端口模式设置:    __HAL_RCC_GPIOA_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();
l串口参数初始化:HAL_UART_Init(&huart1)
l开启中断并且初始化    HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);  HAL_NVIC_EnableIRQ(USART1_IRQn);
l使能串口:
l 编写串口发送函数:重映射PRINTF 函数进行数据的发送或者使用HAL的HAL_UART_Transmit函数进行数据的发送;
三、代码的编写,使用printf函数时候,需要在main.c中添加三个库文件如下所示:
  1. /* USER CODE BEGIN PV */
  2. #include "stdio.h"
  3. #include "string.h"
  4. #include "stdint.h"
  5. /* USER CODE END PV */
定义一下输出的字符串信息如下所示:
  1. /* USER CODE BEGIN 0 */
  2. const uint8_t OUTPUT_str[] = "Hello STM32! Hello WB09! Hello 21 IC huo dong !\r\n";
  3. /* USER CODE END 0 */
若使用printf输出调试信息时候,我们需要重定义一下串口1的发送函数,如下所示:
  1. int fputc(int ch, FILE *f)
  2. {
  3.         HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
  4.         return ch;
  5. }
主要注意的是,我们添加代码时,需要写在用户区,否则使用cube软件生成代码时候,自己写的代码就会被覆盖
主程序代码如下:
  1.     /* USER CODE END WHILE */
  2.     HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1);
  3.     /* Insert delay 100 ms */
  4.     HAL_Delay(100);
  5.     HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_2);
  6.     /* Insert delay 100 ms */
  7.     HAL_Delay(100);
  8.     HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_4);
  9.     /* Insert delay 100 ms */
  10.     HAL_Delay(100);
  11. //                        HAL_UART_Transmit(&huart1,OUTPUT_str,sizeof(OUTPUT_str),100);
  12.   printf("Hello STM32! Hello WB09! Hello 21 IC huo dong !\r\n");
调试验证:
配置串口的波特率为”115200,校验位、停止位等信息后,
41519674274308d150.png
在学习WB09开发板时,注意到当我们使用奇偶校验位时,若使用奇校验或者偶校验时候,我们需要将数据位修改未 9位的方式,否则串口发送数据不正常。
下面是修改为偶校验的方式的调试截图如下:
9551267427595175e4.png
可以看到在串口接收数据为无校验位时,串口接收数据区显示发送的字节已经不正常了,配置成为偶校验的方式才算正常,在使用STM32的串口通讯时候,要注意一下。

yangjiaxu 发表于 2024-12-5 09:41 | 显示全部楼层
配置奇偶校验的话,其实你可以用cubemx来配置好,这样就行了的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

87

主题

224

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部