STM32新手入门篇之HAL库点灯

目录

1.概述

2.软件安装

3.实验步骤

4.在示波器上进行验证

5.通过中断控制LED亮灭


1.概述

概要:STM32有多种开发方式,比如寄存器、固件库、LL库和HAL库,本文用到了HAL库来实现GPIO口的控制以及中断识别点灯,HAL库的特点是操作简单、能够快速上手;另外本文还利用keil5软件携带的示波器对输出引脚波形进行判断,观察stm32芯片在HAL库下运行情况。

所需材料:STM32F103c8t6核心板、面包板(用来连接和固定芯片、LED灯)、STLink(用来将电脑上编写好的程序烧录进芯片)、杜邦线(连接STLink和开发板)。

2.软件安装

HAL库的使用需要用到STM32CubeMX和keil5

一、STM32CubeMX下载

STM32CubeMX的下载与安装可以参考下面这篇文章,按照整个流程来就行,没有什么难的地方,遇到问题就上网百度:

【STM32】入门(十):STM32CubeMx下载、安装、使用-CSDN博客

二、keil5的下载与安装

keil5的下载可以参考下面这个博客,讲解了keil5的下载与安装:

Keil5下载和安装教程-CSDN博客

3.实验步骤

一、使用STM32CubeMX进行文件初始化

优点介绍:平时使用固件库编写代码需要加入很多头文件、源文件,还需要配置环境,过程十分繁琐,而使用STM32CubeMX可以一键生成配置好的keil文件,使用起来十分便捷。

步骤:

选择File、new project

搜索单片机型号

打开所选单片机

初始化配置,我配置了PA0,PA4,PB0三个端口,都是一样的配置方法

为了点亮Led,需要将引脚改为输出模式

继续配置

项目文件配置

生成文件

二、keil编写代码

上一步打开文件后来到了keil界面

代码如下:

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);  // PA0处灯亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);  // PA0处灯灭
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);  // PA4处灯亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);  // PA4处灯灭
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);  // PB0处灯亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);  // PB0处灯灭

烧录配置

 

 

依次点击1,2,3,代码就被录入单片机了

效果图:

关于STLink与单片机的连接方式可以去b站看江协科技关于stm32的前两期视频。

4.在示波器上进行验证

打开keil软件,选择示波器

选择波形分析

选择setup

按步骤选择,第二步引脚编号写为GPIOX_IDR.x,如GPIOA_PIN3为GPIOA_IDR.3

效果图:

该示波器分析了不同引脚的输出情况,可以看出三个引脚的LED是保持两个高电平,1个低电平的

5.通过中断控制LED亮灭

要求:准备设置一个按键控制流水灯的亮灭

打开刚刚生成的CubeMX文件

选择外部中断

 

 配置NVIC

 中断配置完毕,按照之前的方法生成文件

打开刚刚生成的keil项目,在main.c中USER CODE BEGIN4里面加入中断代码,其中myFlag是我设置的一个全局变量,我设置在了main函数之前,用来检测是否中断,并且在主函数中调用它

/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
    if(GPIO_Pin == GPIO_PIN_10){
        {if(myFlag==1)
					myFlag=0;
					else
						myFlag=1;
				}
    }
}
/* USER CODE END 4 */

主函数也发生了改变,具体为判断全局变量是否改变,若改变则说明发生了中断,LED流水灯停止或继续(模拟按键控制流水灯是否启动),下图为主函数里的代码,注意这个while循环是写在总while循环里面的

while(myFlag==0){
		 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);  // PA0处灯亮
		HAL_Delay(1000); // 延时1s
		HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);  // PA0处灯灭
		HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);  // PA4处灯亮
		HAL_Delay(1000); // 延时1s
		HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);  // PA4处灯灭
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);  // PB0处灯亮
		HAL_Delay(1000); // 延时1s
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);  // PB0处灯灭
    }

然后录入即可实现PA10按键控制流水灯运行

由于我没有按键,效果不好展示,不过我用了杜邦线接高低电平来代替按键,验证了该中断效果

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
硬石YS-F1Pro 开发板开发手册(HAL 库) STM32 入门系列教程 STM32 Cube 是一个全面的软件平台,包括 ST 产品的每个系列, ( 如 STM32Cube_F1 是针对 STM32F1 系列)。平台包括了 STM32Cube 硬件抽象层(HAL) 和一套中间组件(RTOS,USB,FS,TCP 等等)。 STM32Cube 是由 ST 公司原创倡议,旨在减少开发负担、时间和费用,为开 发者提供轻松的开发体验。 STMCube 覆盖了 STM32 全系列。 其中 STM32CubeMX 是上位机配置软件,可以根据使用者的选择生成底层初始化代码。 硬件抽象层 (HAL), 便是 CubeMX 配套的库, HAL 库屏蔽了复杂的硬件寄存器操作, 统一了 外设的接口函数( 包含 USB/以太网等复杂外设),代码结构强壮, 已通过 CodeSonar 认证。 同时, HAL 还集成了广泛的例程,可以运行在不同意法半导体 的开发板上。 YS-F1Pro 开发板是硬石团队研发的针对 STM32F103 芯片的综合性实验测试 平台,开发板几乎囊括了芯片所有的外设,这对新手入门是非常好的学习平台, 开发板几乎所有芯片采购来着嘉立创平台,芯片质量有保证, 这与同行还是有很 大区别的。 YS-F1Pro 开发板是一款性价比极高的 STM32 开发板, 接口齐全,我们 特意添加了电机控制部分接口,包括舵机、步进电机、有刷电机、无刷电机控制 接口。 本文档的一个最重要目标是让完全小白都可以轻松愉快的入门学习STM32, 最终掌握 STM32 的基本编程方法,学会将 STM32CubeMX 应用到自己 DIY 应用 中去

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值