打印
[STM32WB]

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

[复制链接]
212|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 聪聪哥哥 于 2024-11-24 08:45 编辑

今天和大家分享一下,学习STM32WB串口通讯的学习过程;一:硬件准备:查看原理图,确定下板载串口引脚接入的具体位置;

二:打开cube软件配置,串口的基本参数:

这里使用的是串口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中添加三个库文件如下所示:
/* USER CODE BEGIN PV */
#include "stdio.h"
#include "string.h"
#include "stdint.h"
/* USER CODE END PV */
定义一下输出的字符串信息如下所示:
/* USER CODE BEGIN 0 */
const uint8_t OUTPUT_str[] = "Hello STM32! Hello WB09! Hello 21 IC huo dong !\r\n";
/* USER CODE END 0 */
若使用printf输出调试信息时候,我们需要重定义一下串口1的发送函数,如下所示:
int fputc(int ch, FILE *f)
{
        HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
        return ch;
}
主要注意的是,我们添加代码时,需要写在用户区,否则使用cube软件生成代码时候,自己写的代码就会被覆盖
主程序代码如下:
    /* USER CODE END WHILE */
    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1);
    /* Insert delay 100 ms */
    HAL_Delay(100);
    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_2);
    /* Insert delay 100 ms */
    HAL_Delay(100);
    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_4);
    /* Insert delay 100 ms */
    HAL_Delay(100);
//                        HAL_UART_Transmit(&huart1,OUTPUT_str,sizeof(OUTPUT_str),100);
  printf("Hello STM32! Hello WB09! Hello 21 IC huo dong !\r\n");
调试验证:
配置串口的波特率为”115200,校验位、停止位等信息后,
在学习WB09开发板时,注意到当我们使用奇偶校验位时,若使用奇校验或者偶校验时候,我们需要将数据位修改未 9位的方式,否则串口发送数据不正常。
下面是修改为偶校验的方式的调试截图如下:
可以看到在串口接收数据为无校验位时,串口接收数据区显示发送的字节已经不正常了,配置成为偶校验的方式才算正常,在使用STM32的串口通讯时候,要注意一下。

使用特权

评论回复
沙发
yangjiaxu| | 2024-12-5 09:41 | 只看该作者
配置奇偶校验的话,其实你可以用cubemx来配置好,这样就行了的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

105

帖子

0

粉丝