HAL库LED点灯

一、搭建开发环境

(一)安装MDK5

具体安装请参照下面链接:
如何开始一个stm32的简单程序的编译_stm32程序编译-CSDN博客

(二)安装Jdk

由于STM32CubeMX需要用到JAVA,因此需要安装jdk环境。
jdk官网下载链接:
Java Downloads | Oracle

(三)安装STM32CubeMX

1、下载地址

https://www.st.com/en/development-tools/stm32cubemx.html

2、安装过程

  • 找到压缩包解压后右键exe文件并以管理员身份运行exe文件。

  • 打开安装界面后点击下一步。

  • 许可协议界面,首先勾选接受许可协议条款,随后点击下一步。

  • 自主选择STM32CubeMX所要安装到的位置,然后点击Next。

  • 此界面不用做操作点击下一步,进行安装。

  • 等待进度条走完,点击Nex完成安装,随后点击Done。

  • 在桌面上找到STM32CubeMX并打开,找到myST点击并登录账号(账号是在下载网址进行注册)

  • 随后点击Help选择Manage embedded software packages选项。

  • 找到我们使用的STM32F1XX系列,选择下载固件库(此处我下载的最新版本)。

二、HAL库开发方法及实践

(一)HAL库开发方法(点亮LED为例)

1、操作流程

  • 创建新项目

  • 选择自己所使用的芯片(STM32F103C8T6),双击该选项项目创建完成。

  • 基础配置:选择SYS配置Debug。

  • 配置时钟RCC,将将High和Low均选为最后一项即可,按照如下配置即可。

  • 配置引脚PC13。

  • 保存并且生成代码。

2、主函数修改

将如下函数添加至主函数中即可,代码如下:

 //主函数代码中在while函数中添加
 while (1)
  {
    /* USER CODE END WHILE */
    
    /* USER CODE BEGIN 3 */
//自定义部分
        HAL_Delay(500);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);//电平翻转函数
		HAL_Delay(500);
 
  }
  /* USER CODE END 3 */

3、效果

(二)实验实践

1、题目1

(1)题目要求:重做上一个LED流水灯作业,用GPIO端口完成2只LED灯的周期闪烁。

(2)STM32CubeMX操作流程:

  •  创建新项目

  • 选择自己所使用的芯片(STM32F103C8T6),双击该选项项目创建完成。

  •  基础配置:选择SYS配置Debug。

  • RCC配置:与上方例子不同的是此处只配置HSE,如下图所示:

  • 配置需要的端口:点击设置GPIO_OUTPUT,我选择的是PC13,PA15,PB0

将上述三个端口配置为高电平输出,如下图所示:

  • Clock Configuration设置:此处只做此修该

  •  保存并且生成代码。

(3)主函数修改:

将如下函数添加至主函数的While(1)中即可,代码如下:

    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);  // 灯1亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);  // 灯1灭
	  
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);  // 灯2亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);  // 灯2灭
	  
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);  // 灯3亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);  // 灯3灭

2、题目2

(1)题目要求 :用GPIO端某一管脚接2个开关(用杜邦线模拟代替)。采用中断模式编程,当2分开关接高电平时,对应的两个LED灯停止工作(即停止周期性闪烁),接低电平时,恢复工作。

(2)STM32CubeMX操作流程:

同上述方法一样创建项目配置SYS和RCC一致,不同点在于引脚配置以及中断配置,端口配置和中断配置如下所示:

引脚配置:

中断触发类型分为:上升沿;下降沿;上升沿和下降沿都触发三种方式,这里我们选用下降沿,即按下按键,灯灭,松开灯亮。

中断配置:

保存并且生成代码,与上述方法一致。

(3)主函数修改:

进入到keil5后,只需要进行main.c的改写即可,在main主函数外加入下述代码。

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	
	switch(GPIO_Pin){
		case GPIO_PIN_0:
			if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET)
				HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
		break;
		case GPIO_PIN_1:
			if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1) == GPIO_PIN_RESET)
				HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
		break;
	}
}

三、总结

总体来说配置hal库操作起来相较于配置标准库和汇编语言要相对简单,但是个人比较喜欢配置标准库,但代码过长的程序使用Hal库更为方便。

  • 26
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值