STM32编程练习HAL库

目录

一、2只LED灯的周期闪烁

新建CubeMX项目

RCC选择

配置SYS

配置GPIO输出

Clock Configuration设置

文件设置

代码设置

代码修改

实物演示

二、中断控制2只LED灯的周期闪烁。

设置输出端口和中断端口

NVIC设置

代码修改

实物演示

三、时序波形分析

基础设置

端口设置

波形演示

四、总结

五、参考资料


一、2只LED灯的周期闪烁

新建CubeMX项目

        在File中新建项目,选择STM32F103C8芯片

RCC选择

        进行如图设置。

配置SYS

        在Debug处选择“Serial Wire”。

配置GPIO输出

        选择A0、B0口设置为“GPIO_Output”,同时设置为高电平工作方式。

Clock Configuration设置

        进行如图设置。

文件设置

        为文件命名并选择存储位置,同时在Toolchain/IDE处设置“MDK-ARM”,以便在Kile中运行文件。

代码设置

        进行如图设置,之后完成代码生成,打开Kile。

代码修改

        在自动生成的代码中找到main.c文件,在main函数中找到while(1),在该循环中加入如下代码。

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

实物演示

        修改代码后进行编译,无误后在如图位置进行与实物的连接。

二、中断控制2只LED灯的周期闪烁。

        基础的设置如RCC、SYS等与上述差不多,这里对中断需要进行的额外操作进行演示。

设置输出端口和中断端口

        对于输出端口还是设置为高电平工作方式,中断端口选择设置为“GPIO_EXTI”,同时设置为下拉触发。

NVIC设置

        开启中断使能和中断优先级分组,这里抢占优先级均为0

代码修改

        在生成的代码中找到stm32f1xx_it.c文件,找到HAL_GPIO_EXTI_IRQHandler函数,并跳转到该函数。

        继续找到HAL_GPIO_EXTI_Callback函数,重写该函数。

 void HAL_GPIO_EXTI_Callback(unint16_t GPIO_Pin)
 {
     if(GPIO_Pin==GPIO_PIN_12)
         HAL_GPIO_WritePin(GPIOA,GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
     else if(GPIO_Pin==GPIO_PIN_13)
         HAL_GPIO_WritePin(GPIOA,GPIOA, GPIO_PIN_6, GPIO_PIN_SET);
 }
 ​

        接着在main.c文件找到main函数,在while(1)循环中编写如下函数。

 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);  // 灯1亮
 HAL_Delay(1000); // 延时1s
 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);  // 灯1灭
         
 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET);  // 灯2亮
 HAL_Delay(1000); // 延时1s
 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET);  // 灯2灭

实物演示

三、时序波形分析

基础设置

        在Kile设置中,找到Debug,进行如下设置。

端口设置

        从如下位置进入对应界面,并选择波形图。

        设置对应端口。

        输入“GPIOx_IDR.n”并回车,即可表示端口为x,引脚为n的端口。同时设置为Bit类型。

波形演示

四、总结

        本次利用HAL库进行了STM编程的练习,相较于之前,利用HAL库可以直接将想要进行操作的端口进行初始化的代码编写,省去了一些步骤,只需进行主要操作的代码编写,更为简便。

五、参考资料

STM32基于HAL库流水灯实验

stm32外部中断模式控制灯亮灭

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值