此次学习的程序基于“苏州大学嵌入式学习社区官网—金葫芦专区—嵌入式书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_drivers下gpio.c文件中定义:LIGHT_RED代表端口号和引脚号,LIGHT_OFF代表的是端口引脚状态

3.Ctrl+F打开查找功能框,分别输入LIGHT_RED和LIGHT_OFF进行查询其所在文件。
LIGHT_RED和LIGHT_OFF的值都在目录05_UserBoard下user.h文件定义:
- LIGHT_RED定义为(PTB_NUM|7)即端口B的7号引脚
- LIGHT_OFF的值为0b0001


4.由于只知道PTB_NUM表示端口B,所以继续查询PTB_NUM所在的位置,得出它的值。
PTB_NUM的值在目录03_MCU\MCU_drivers下gpio.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外部设备时钟使能



2627

被折叠的 条评论
为什么被折叠?



