嵌入式作业4——GPIO直接地址编程方式和调用构件方式实现AHL-STM32L431开发板上红、绿、蓝及组合颜色交替闪烁

此次学习的程序基于“苏州大学嵌入式学习社区官网—金葫芦专区—嵌入式书6版—电子资源AHL-MCU-6”中04-Software\CH04,通过学习参考程序来自行实现GPIO直接地址编程和调用构件编程。


一、学习CH04示例程序,包括gpio.c和4个工程中的main.c

1.四个工程文件如下
在这里插入图片描述
2.通过学习四个工程的main.c文件,知道它们分别用不同的编程方式实现了点亮开发板的灯光或者控制灯光闪烁的功能,包括有

  • 汇编语言编程方式点亮蓝色发光二极管
  • 利用gpio_init(LIGHT_RED,GPIO_OUTPUT,LIGHT_OFF);gpio_set(LIGHT_RED,LIGHT_ON);演示发光二极管如何被点亮
  • 调用构件编程方式实现蓝色发光二极管每秒闪烁一次
  • 直接地址编程方式实现蓝色发光二极管每秒闪烁一次

3.gpio.c在工程文件中目录03_MCU\MCU_drivers下,是GPIO底层驱动构件源文件,里面定义了很多GPIO各功能操作函数如:

  • gpio_init
  • gpio_set
  • gpio_get
  • gpio_reverse
  • gpio_pull
  • gpio_enable_int
  • gpio_disable_int
  • gpio_drive_strength
  • gpio_get_int
  • gpio_clear_int
  • gpio_clear_allint
  • gpio_get_port_pin

二、gpio_set(LIGHT_RED,LIGHT_OFF); 语句中LIGHT_RED和LIGHT_OFF的值是多少?

1.gpio_set(LIGHT_RED,LIGHT_ON);出现在工程目录CH04\GPIO-BlueLight_20240421\07_AppPrg下的main.c文件,具体程序如下:
在这里插入图片描述
2.gpio_set在目录03_MCU\MCU_driversgpio.c文件中定义:LIGHT_RED代表端口号和引脚号,LIGHT_OFF代表的是端口引脚状态
在这里插入图片描述
3.Ctrl+F打开查找功能框,分别输入LIGHT_RED和LIGHT_OFF进行查询其所在文件。

LIGHT_RED和LIGHT_OFF的值都在目录05_UserBoarduser.h文件定义:

  • LIGHT_RED定义为(PTB_NUM|7)即端口B的7号引脚
  • LIGHT_OFF的值为0b0001

在这里插入图片描述
在这里插入图片描述
4.由于只知道PTB_NUM表示端口B,所以继续查询PTB_NUM所在的位置,得出它的值。

PTB_NUM的值在目录03_MCU\MCU_driversgpio.h文件中定义:

  • PTB_NUM的值为(1<<8)即0b10000 0000

在这里插入图片描述
在这里插入图片描述

综上:
LIGHT_RED的值 = PTB_NUM|7 = 0b10000 0111
LIGHT_OFF的值 = 0b0001

三、用直接地址编程方式,实现红绿蓝三灯轮流闪烁

1、GPIO基本编程步骤

GPIO直接地址编程是直接对端口进行编程,使芯片的某一引脚为GPIO功能,并定义为输入/输出,随后进行应用。直接地址编程之前,需要先查阅下载电子资源中目录01-Information下的数据手册,了解几个相关的寄存器:

在这里插入图片描述
(1)通过外部设备时钟使能寄存器(RCC_AHB2ENR)设定对应GPIO端口外部设备时钟使能,本次
编程设定GPIO的端口B外部设备时钟使能

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值