IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> stm32CubeMX,配合Keil使用HAL库实现简单流水灯与串口通信 -> 正文阅读

[嵌入式]stm32CubeMX,配合Keil使用HAL库实现简单流水灯与串口通信

stm32CubeMX,配合Keil使用HAL库实现简单流水灯与串口通信

1、初步了解stm32CubeMX

STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片。 在CubeMX上,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IAR For ARM、TrueStudio等 省去了我们配置各种外设的时间,大大的节省了时间

搭建stm32CubeMX环境参考链接https://blog.csdn.net/qq_43279579/article/details/112213196

2、利用stm32CubeMX生成相关代码

1、创建新工程

image-20211026202042382

2、选择芯片

image-20211026202224147

3、点击下方的已经选择好的芯片进入工程

image-20211026202530122

4、在Pinout &Configuration 栏里,配置系统调试接口SYS,选择 Serial Wire

image-20211026202838599

5、配置外设,RCC设置,选择 HSE (外部高速时钟)为 Crystal/Ceramic Resonator

image-20211026203008621

6、配置时钟,点击 Cook Configuration ,按照下面方式将 STM32 最高时钟调为72M

image-20211026203300631

7、配置USART1,用于串口调试,USART1 一般系统板上都会与 usb 接口连接在一起,可以通过数据线,与上位机通讯。在 Connectify 中,选择 USART1,模式选择 Asynchronous(异步)
image-20211026203709661

8、配置GPIO管脚

点击右侧芯片上所需要的引脚,我使用的是PA0,PB0,PC13管脚来控制流水灯,点击管脚 PA0,在菜单中选择 GPIO_Output,依次配置其他引脚,在左侧的 GPIO 中看到每个管脚的位置,输出模式改为高电平

image-20211026204601129

image-20211026204733534

9、工程设置,在 Project Manager 界面中选择 Project ,按要求填入相关信息,注意地址不要有中文字符和空格,不然在keil5中编译会报错。选择 Keil5 编译器生成代码。

image-20211026205449126

生成刚刚配置的 gpio.c 和 usart.c 以及对应的头文件

image-20211026205636184

10、生成代码,打开工程

image-20211026205957818

3、在keil5中添加代码

只需在main函数中的while(1)添加功能代码

流水灯代码部分

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);
HAL_Delay(1000) ;//1s  
		

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);
HAL_Delay(1000) ;//1s 
		
		
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);
HAL_Delay(1000) ;//1s 

image-20211026211548986

代码解析

延时函数:HAL_Delay(1000) ;表示延时1s
写管脚函数:HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);
函数原型:

void HAL_GPIO_WritePin(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin,GPIO_PinState PinState)

参数说明:

GPIOx: 管脚组(x的取值为A~G);
GPIO_Pin: 管脚编号(x的取值为0~15);
PIN_State: 管脚的状态

GPIO_BIT_RESET表示0输出低电平,GPIO_BIT_SET表示1输出高电平

通过控制PA0,PB0,PC13端口的电平,每切换一次状态延时一秒,每次只让一个灯亮,其余灯熄灭,从而达到流水灯的效果

4、硬件测试

img

5、keil5示波器观察波形

点击魔法棒,配置相关参数

image-20211026215020356

image-20211026215249599

进入调试

image-20211026215421451

image-20211026215729498

在弹出的窗口里 “Special Function Register” 里将GPIOA_IDRGPIOB_IDRGPIOC_IDR拖入到逻辑分析仪里

image-20211026220218129

设置管脚

image-20211026220356904

运行仿真

截图如下

image-20211026220723455

波形分析

在同一时刻下,三个管脚的的电平始终是一个高,两个低,交替出现,与程序设计相同。

6、串口通信

利用stm32CubeMX生成相关代码,依次参照下列做法

image-20211027210701445

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rM7vOjty-1635346412208)(https://i.loli.net/2021/10/27/CblhiK8VYQU9yH6.png)]

生成代码,参考前面步骤

image-20211027211622498

在main()中先定义一个字符串

uint8_t  uartbuff[20]="Hollw Windows!";

再在while循环中添加入下代码

 HAL_UART_Transmit(&huart1,uartbuff,20,10);
 HAL_Delay(1000);

image-20211027214148036

通过串口助手进行测试

image-20211027224116844

image-20211027224308557

点击打开串口,观察结果

image-20211027224857796

观察串口输出波形

观察USART1_SR端口

image-20211027221002212

image-20211027221125527

7、总结

使用stm32CubeMX生成代码大大减少写代码的时间,减小工作量。

8、参考链接

STM32CubeMX介绍https://blog.csdn.net/as480133937/article/details/99935090

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 13:13:03  更:2021-10-29 13:15:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:40:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码