STM32CubeMX+HAL库快速上手指南

发布时间:2026/11/5 6:44:53
STM32CubeMX+HAL库快速上手指南 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录前言一、ST官方给的文件UM1718)二、HAL库函数速查手册 | 波特律动三、练习STM32F103C8T61.配置2.代码部分总结前言初次接触stm32cubemx发现这个软件能直接生成初始化和之前在学校学的标准库不一样以前标准库还是自己手动配置的工程文件手写的写的.c、.h文件当时我就在想老师要求各个外设初始化的时候需要模块化每个外设初始化配置的东西也差不多完全可以官方配置好我们自己修改参数就行。现在这个软件通过图形化的形式配置时钟设置外设省去很多时间但是我想写一点东西的时候就一点无从下手不知道调用什么函数目前就搜集了一些资料虽然ai现在直接跟它说它几秒钟就写好了但是感觉自己印象不深刻轮到自己敲还是犯难。一、ST官方给的文件UM1718)这部分还是介绍软件生成代码的介绍了几个文件的作用以及命名规则。官方给的串口初始化一般配置外设都是这几个函数注意配置函数和释放函数的区别不要看成一个了。二、HAL库函数速查手册 | 波特律动还是不知道能用哪些函数HAL库函数速查手册 | 波特律动这个网站可以查看也可以直接看下面这里显示的不全GPIOHAL_GPIO_WritePin(端口, 引脚号, 电平状态); // 写引脚电平 HAL_GPIO_ReadPin(端口, 引脚号); // 读引脚电平 HAL_GPIO_TogglePin(端口, 引脚号); // 翻转引脚电平例子// 写引脚 void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); // 示例PB0输出高 HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // 读引脚 GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); // 示例读取PB0电平 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) GPIO_PIN_RESET){} // 翻转电平 void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);UARTHAL_UART_Transmit(串口句柄, 数据指针, 数据长度, 超时时间); // 串口发送阻塞方式 HAL_UART_Receive(串口句柄, 数据指针, 数据长度, 超时时间); // 串口接收阻塞方式 HAL_UART_Transmit_IT(串口句柄, 数据指针, 数据长度); // 串口发送中断方式 HAL_UART_Receive_IT(串口句柄, 数据指针, 数据长度); // 串口接收中断方式 HAL_UART_Transmit_DMA(串口句柄, 数据指针, 数据长度); // 串口发送DMA方式 HAL_UART_Receive_DMA(串口句柄, 数据指针, 数据长度); // 串口接收DMA方式例子// 阻塞发送huart1是CubeMX自动生成的句柄 HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); // 示例 uint8_t buf[]Test OK\r\n; HAL_UART_Transmit(huart1, buf, sizeof(buf), 100);ADCHAL_ADC_Start(ADC句柄); // 启动ADC转换阻塞方式 HAL_ADC_Stop(ADC句柄); // 停止ADC转换 HAL_ADC_Start_IT(ADC句柄); // 启动ADC转换中断方式 HAL_ADC_Stop_IT(ADC句柄); // 停止ADC转换中断方式 HAL_ADC_Start_DMA(ADC句柄, 数据指针, 长度); // 启动ADC转换DMA方式 HAL_ADC_Stop_DMA(ADC句柄); // 停止ADC转换DMA方式 HAL_ADC_PollForConversion(ADC句柄, 超时时间); // 等待ADC转换完成阻塞轮询 HAL_ADC_GetValue(ADC句柄); // 获取ADC采样值三、练习STM32F103C8T61.配置(1)Debug模式修改一下改成图片上的如果用no debug 会导致只能烧录一次后面烧录会显示stlink连接不成功解决措施就是在STM32 ST-LINK Utility这个软件上擦除已经烧录进去的东西。连接不上在软件里面选择“connect to the target”按住stm32F103C8t6的复位键擦除后记得断开连接不然会占用设备2配置时钟树这里一般选择HSE高速外部震荡器作为时钟源比较稳定。3导出如果是用keil的话选择MDK-ARM我这里配置的是cmake所有的配置搞完选择右上角的GENERATE CODE就可以生成代码了。如果下一次有改动的话也是点一下这个就更新配置了。2.代码部分环境配置vscodestm32cubemxcmake在vscode里面搜索这个会安装配套的扩展包不需要自己手动配置顺带补充一下在vscode的左下角的设置-配置文件-新建配置文件可以将不同的环境区分开来。自定义文件第一在cmake文件下新建文件夹user在user下面新建文件CMakeLists.txt不能直接放在cmake下面那个mx重新生成的时候这些会被覆盖掉;在文件根目录下面新建文件夹创建.c和.h文件按照图片内容在.txt文件下修改变量名注意看清楚左侧选的文件复制cmake-stm32cubemx-camkelists.txt文件红框里面的内容到我们新建的.txt文件我们自己建的文件CMakeLists.txt里面是这样的里面的内容都是前面去复制的。在根目录下面的CMakeList.txt新增框起来的部分这部分在blibli上看的视频没有第一个红框的部分应该是我嵌入的ai编译错误之后给我加的总结提示这里对文章进行总结例如以上就是今天要讲的内容本文仅仅简单介绍了pandas的使用而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询