STM32软件学习笔记(一)基于HAL库的STM32F429单片机串口打印程序

本文介绍了如何使用STM32CubeMX配置HAL库进行串口打印程序开发。通过配置GPIO和串口,当按下不同按键时,通过串口发送数据到上位机显示。在中断回调函数中实现数据发送,并强调理解各功能模块工作流程的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

|版权声明:本文为博主原创文章,转载请注明出处。https://blog.youkuaiyun.com/NeverImagine_/article/details/95517664

  目前ST官方有提供两种库文件,一种是标准库,一种是HAL库,在HAL库问世之前,标准库一直被嵌入式工程师广泛使用,由于标准库的资源都是开源的,几乎所有应用网上都可以找到demo,所以无论是老工程师还是初学者都十分推崇。然而近几年开始,ST官方大力推行使用HAL库,其优势是操作方便,所有底层都封装好,用户在开发时只需调用其生成的API即可。同时,HAL库可以通过ST官方提供的STM32CubeMX图形软件生成,用户可根据不同的应用进行相应的配置,Cube可以根据用户的配置自动生成底层代码,用户只需根据需求开发自己的功能函数即可。
  笔者入坑软件的时候是从标准库开始学习的,最近开始学习使用HAL库,HAL库十分冗长但功能强大(很多使用标准库需要自己完成的操作,例如简单的操作GPIO的输出,HAL库都已经封装成了现成的函数,只是初学者找起来比较麻烦。。),熟悉了HAL库的套路之后,开发就变的容易多了。笔者也是刚整明白基于HAL库的串口打印程序,在此记录。

一、使用STM32CubeMX进行引脚的相关配置
  本实验为了实现两个按键的串口打印程序,在按下PA0按键时上位机显示“1”,按下PC13按键时上位机显示“2”。
  这里只是为实现串口打印的功能,所以只需配置一个串口即可,但为了直观,本文还配置了一三个输出口两个输入口,作为不同的状态显示。配置如图一:
在这里插入图片描述
               图一、本实验的引脚配置
  其中:在本实验中,对于PA0和PC13两个按键来说,配置成输入模式和外部中断模式在功能上是一样的,在应用中需要根据输入的紧要程度进行判断是否设置成中断模式。
  这里需要注意打开串口中断,如图二所示:
在这里插入图片描述
               图二、打开串口中断
  配置完成之后点击右上角GENERATE CODE生成代码,注意生成代码时根目录的文件夹名称不能出现中文,否则会提示错误。

二、代码分析
生成的代码目录如图三:
在这里插入图片描述
          图三、生成的代码目录(点击编译后左边会出现“+”)
  在这里,所有底层代码都已经根据配置生成好了,例如gpio.c文件中:

void MX_GPIO_Init(void)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOH_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOH, GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12, GPIO_PIN_RESET);

  /*Configure GPIO pin : PC13 */
  GPIO_InitStruct.Pin = GPIO_PIN_13;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  /*Configure GPIO pin : PA0 */
  GPIO_InitStruct.Pin = GPIO_PIN_0;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  /*Configure GPIO pins : PH10 PH11 PH12 */
  GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;
  GPIO_InitStruct.Mode = GPIO_MODE_OU
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值