0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【GD32H757Z海棠派开发板使用手册】第一讲 GPIO-流水灯实验

聚沃科技 2024-04-16 11:39 次阅读

1.GPIO-流水灯实验

1.1实验内容

通过本实验主要学习以下内容:

  • GPIO结构及原理;
  • GPIO输出功能实现;
  • LED驱动原理。

1.2实验原理

1.2.1GPIO外设原理

GD32H7系列MCU最多支持135个通用I/O引脚(GPIO),分别为PA0 ~ PA10,PA13 ~ PA15,PB0 ~ PB15,PC0 ~ PC15,PD0 ~ PD15,PE0 ~ PE15,PF0 ~ PF15,PG0 ~ PG15,PH0 ~ PH15,PJ8

~ PJ11,PK0 ~ PK2。各片上设备用其来实现逻辑输入/输出功能。每个GPIO端口有相关的控制和配置寄存器以满足特定应用的需求。片上设备GPIO引脚的外部中断由EXTI模块的寄存器控制和配置。

GPIO 端口和其他的备用功能(AFs)备用引脚,在特定的封装下获得最大的灵活性。GPIO引脚通过配置相关的寄存器可以用作备用功能引脚,备用功能输入/输出都可以。每个GPIO引脚可以由软件配置为输出(推挽或开漏)、 输入、 外设备用功能或者模拟模式。每个GPIO引脚都可以配置为上拉、 下拉或无上拉/下拉。除模拟模式外,所有的GPIO引脚都具备大电流驱动能力。

GD32H7xx系列的GPIO端口结构如下图所示,由该图可知,GPIO结构可大致分为三个部分:1、输出控制,可配置为推挽输出以及备用功能输出,在推挽输出情况下,输出驱动由输出控制寄存器进行控制,在备用功能输出情况下,输出驱动由外设备用功能驱动,具体输出会通过对电源以及对地的mos管进行实现,上下拉电阻对输出也有作用;2、输入控制,输入可配置内部上拉或者下拉,内部上下拉电阻均为40K左右,然后通过内部施密特触发器输入到内部,之后可以外设通过备用功能输入或者通过输入状态寄存器读取,施密特触发器的实现功能为输入电压由低到高变化时,低于VIL为低,高于VIH为高,在VIL和VIH之间为低,输入电压由高到低变化时,高于VIH为高,低于VIH为低,在VIL和VIH之间为高,因而为了可靠读取输入电平状态,输入电压高电平需要高于VIH,低电平需要低于VIL才可靠,一般VIL为0.3 VDD,VIH为0.7 VDD;3、ESD保护,在标准IO接口上,ESD保护为对电源和对地的两个反向二极管,因而若引脚电压高于VDD电压,可能存在漏电现象(通过反向二极管漏电到VDD),故使用标准IO接口需注意引脚输入电压不可高于VDD电压,另外有一类IO接口为5VT引脚,该引脚可耐5V电压输入,不存在引脚漏电现象,如果设计中存在引脚先于电源上电的情况,该引脚需要使用5VT引脚,避免引脚漏电,5VT引脚可通过数据手册查看确认。

wKgZomYd6n2AStlmAADv6J5f0Us470.png

GD32H7系列MCU引脚的复用功能通过AF表进行查阅,具体如下图所示。

wKgaomYd6oqAWa5xAAMjU1CazRk140.png

1.2.2LED驱动原理

LED是一种半导体发光元件,可以将电能转换为光能,可通过外部电路进行驱动,有单色的也有多色的,可通过电压或电流来进行驱动,驱动亮度可调。LED驱动比较简单,后续会在硬件设计中介绍本例程所用LED驱动的原理。

1.3硬件设计

本节主要介绍GPIO驱动LED电路。该电路如下图所示,该电路中具有四个LED,一端接地,另外一端通过4.7k欧姆限流电阻连接至GPIO,当GPIO输出高电平时,LED电亮,反之熄灭。对应的GPIO引脚分别为PE3/PC13/PG3/PE2。

wKgZomYd6qiATcSqAAB6excAakk019.png

1.4代码解析

1.4.1驱动初始化函数

驱动初始化函数如下所示,主要功能为延迟初始化、LCD初始化等,其中延迟使用systick定时器进行实现。在该函数中使能了内部cache、中断向量表拷贝到SRAM起始并进行中断向量偏移、同时若使能LCD,将会进行LCD初始化以及显示。

C
SET_FLASH_AREA void driver_init(void)
{

static __IO uint8_t vector_table[0x400]__attribute__((section(".ARM.__at_0x24000000")));

driver_system_config();

for(uint16_t t=0;t<0x400;t++)
{
vector_table[t]=REG8(0x08000000+t);
}
nvic_vector_table_set(NVIC_VECTTAB_RAM, 0);

cache_enable();

delay_init();

#if (LCD_DEBUG == 1)
bsp_lcd_init(); /* 初始化LCD */
bsp_lcd_clear(WHITE);
//显示log图片
bsp_show_log();
//设置打印窗口
bsp_lcd_printf_init(10,109,bsp_lcd_parameter.width-1,bsp_lcd_parameter.height-1,FONT_ASCII_16_8,WHITE,BLUE);
#endif
}

1.4.2LED配置函数

LED相关配置函数实现在bsp_led.c文件中,首先将LED进行注册,注册语句如下,注册之后即可通过别名的方式对相关LED进行相关配置。

C
/* LED定义注册 */
LED_DEF(LED1,E,3,RESET); /* PE3定义为LED1 */
LED_DEF(LED2,C,13,RESET); /* PC13定义为LED2 */
LED_DEF(LED3,G,3,RESET); /* PG3定义为LED3 */
LED_DEF(LED4,E,2,RESET); /* PE2定义为LED4 */

LED初始化函数如下,可以通过别名数组的方式对LED GPIO进行成组初始化。

C
const void* LED_INIT_GROUP[]={&LED1,&LED2,&LED3,&LED4};
void bsp_led_init(typdef_gpio_general *LEDx)
{
driver_gpio_general_init(LEDx);
}
void bsp_led_group_init(void)
{
uint8_t i;
for(i=0;i
{
bsp_led_init(((typdef_gpio_general *)LED_INIT_GROUP[i]));
}
}

LED初始化之后即可对相关LED进行输出相关操作,开发板历程中提供了输出高、低以及翻转的配置函数,可供使用者方便调用。

C
void bsp_led_on(typdef_gpio_general *LEDx)
{
driver_gpio_pin_write(LEDx,(bit_status)!(LEDx->default_state));
}
void bsp_led_off(typdef_gpio_general *LEDx)
{
driver_gpio_pin_write(LEDx,LEDx->default_state);
}
void bsp_led_toggle(typdef_gpio_general *LEDx)
{
driver_gpio_pin_toggle(LEDx);
}

1.4.3主函数

本例程主函数如下所示,首先进行驱动初始化,之后进行LED初始化,然后初始化串口并打印”Stream LED demo.“的log,在while(1)主循环中延迟100ms进行顺序循环翻转LED,以实现流水灯现象。

C
int main(void)
{
uint8_t i=0;
driver_init();
bsp_led_group_init();
bsp_uart_init(&BOARD_UART); /* 板载UART初始化 */
printf_log("Stream LED demo.\r\n");
while(1)
{
delay_ms(100);
bsp_led_toggle(((typdef_gpio_general *)LED_INIT_GROUP[i++%LED_SIZE]));
}
}

1.5实验结果

将本例程编译通过后,烧录到紫藤派开发板中,运行后可观察到LED1-LED4顺序点亮,实现流水灯的功能.

由聚沃科技原创

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44554

    浏览量

    634635
  • 开发板
    +关注

    关注

    25

    文章

    5032

    浏览量

    97372
  • GPIO
    +关注

    关注

    16

    文章

    1204

    浏览量

    52051
收藏 人收藏

    评论

    相关推荐

    GD32H757Z海棠开发板使用手册】第十三讲 SDIO-SD卡读写实验

    通过本实验主要学习以下内容: •USB协议基本原理 •GD32H7xx USBHS的使用 •虚拟键盘的协议原理及使用
    的头像 发表于 06-06 11:26 1880次阅读
    【<b class='flag-5'>GD32H757Z</b><b class='flag-5'>海棠</b><b class='flag-5'>派</b><b class='flag-5'>开发板</b><b class='flag-5'>使用手册</b>】第十三讲 SDIO-SD卡读写<b class='flag-5'>实验</b>

    使用STM32H757XI双核流水灯调试 精选资料分享

    ,非常方便。新建个工程,选择对应的开发板型号。硬件配置阅读用户手册,尤其是电源配置。stm32H757XI电源选stik跳线,3v3跳线之类的跳线设置,开关打到boot0从用户fla
    发表于 08-03 07:25

    YL-51开发板使用手册

    YL-51开发板使用手册,YL-51开发板使用手册YL-51开发板使用手册YL-51
    发表于 05-10 16:31 21次下载

    GPIO-流水灯的前后今生

    主要是STM32系列的GPIO-流水灯的前后今生进行详细的讲解,需要的自行下载
    发表于 06-17 16:48 8次下载

    51开发板使用手册

    51开发板使用手册,感兴趣的小伙伴们可以瞧瞧。
    发表于 11-23 15:45 11次下载

    DBS32A开发板硬件介绍和实验的详细使用手册资料免费下载

    本文档的主要内容详细介绍的是DBS32A开发板硬件介绍和实验的详细使用手册资料免费下载硬件介绍,实验
    发表于 09-20 15:20 4次下载
    DBS32A<b class='flag-5'>开发板</b>硬件介绍和<b class='flag-5'>实验</b>的详细<b class='flag-5'>使用手册</b>资料免费下载

    KC705开发板英文使用手册

    KC705开发板英文使用手册
    发表于 11-01 10:19 5次下载

    GD32H757Z海棠开发板使用手册】第二 GPIO-按键查询检测实验

    2.1实验内容通过本实验主要学习以下内容:GPIO输入功能原理;按键查询输入检测原理;2.2实验原理2.2.1GPIO输入功能原理
    的头像 发表于 04-17 10:42 725次阅读
    【<b class='flag-5'>GD32H757Z</b><b class='flag-5'>海棠</b><b class='flag-5'>派</b><b class='flag-5'>开发板</b><b class='flag-5'>使用手册</b>】第二<b class='flag-5'>讲</b> <b class='flag-5'>GPIO-</b>按键查询检测<b class='flag-5'>实验</b>

    GD32H757Z海棠开发板使用手册】第五 PMU-低功耗实验

    PMU即电源管理单元,其内部结构下图所示,由该图可知,GD32H7XX系列MCU具有三个电源域,包括VDD/VDDA电源域、0.9V电源域以及电池备份域,其中,VDD /VDDA域由电源直接供电
    的头像 发表于 04-20 09:32 996次阅读
    【<b class='flag-5'>GD32H757Z</b><b class='flag-5'>海棠</b><b class='flag-5'>派</b><b class='flag-5'>开发板</b><b class='flag-5'>使用手册</b>】第五<b class='flag-5'>讲</b> PMU-低功耗<b class='flag-5'>实验</b>

    GD32F470紫藤开发板使用手册第一讲 GPIO-流水灯实验

    GPIO结构及原理; GPIO输出功能实现; LED驱动原理。
    的头像 发表于 04-30 11:34 977次阅读
    【<b class='flag-5'>GD</b>32F470紫藤<b class='flag-5'>派</b><b class='flag-5'>开发板</b><b class='flag-5'>使用手册</b>】<b class='flag-5'>第一讲</b> <b class='flag-5'>GPIO-</b><b class='flag-5'>流水灯</b><b class='flag-5'>实验</b>

    GD32H757Z海棠开发板使用手册】第八 ADC-规则组多通道采样实验

    通过本实验主要学习以下内容: ADC的简介 GD32FH757 ADC工作原理 DMA和DMAMUX的原理 规则组多通道循环采样
    的头像 发表于 05-14 09:39 626次阅读
    【<b class='flag-5'>GD32H757Z</b><b class='flag-5'>海棠</b><b class='flag-5'>派</b><b class='flag-5'>开发板</b><b class='flag-5'>使用手册</b>】第八<b class='flag-5'>讲</b> ADC-规则组多通道采样<b class='flag-5'>实验</b>

    GD32H757Z海棠开发板使用手册】第九 USART-printf打印实验

    通过本实验主要学习以下内容: •串口简介 •GD32H757串口工作原理 •使用printf打印信息
    的头像 发表于 05-15 11:39 712次阅读
    【<b class='flag-5'>GD32H757Z</b><b class='flag-5'>海棠</b><b class='flag-5'>派</b><b class='flag-5'>开发板</b><b class='flag-5'>使用手册</b>】第九<b class='flag-5'>讲</b> USART-printf打印<b class='flag-5'>实验</b>

    GD32F303红枫开发板使用手册】第二 GPIO-流水灯实验

    GD32F303系列MCU最多可支持 112 个通用I/O 引脚(GPIO),分别为 PA0 ~ PA15, PB0 ~ PB15, PC0 ~ PC15,PD0 ~ PD15, PE0
    的头像 发表于 05-29 10:02 1631次阅读
    【<b class='flag-5'>GD</b>32F303红枫<b class='flag-5'>派</b><b class='flag-5'>开发板</b><b class='flag-5'>使用手册</b>】第二<b class='flag-5'>讲</b> <b class='flag-5'>GPIO-</b><b class='flag-5'>流水灯</b><b class='flag-5'>实验</b>

    GD32H757Z海棠开发板使用手册】第十一讲 SPI-SPI NOR FLASH读写实验

    通过本实验主要学习以下内容: •SPI简介 •GD32H7 SPI简介 •SPI NOR FLASH——GD25Q128ESIGR简介 •使用GD32H7 SPI接口实现对
    的头像 发表于 06-04 11:42 985次阅读
    【<b class='flag-5'>GD32H757Z</b><b class='flag-5'>海棠</b><b class='flag-5'>派</b><b class='flag-5'>开发板</b><b class='flag-5'>使用手册</b>】第十<b class='flag-5'>一讲</b> SPI-SPI NOR FLASH读写<b class='flag-5'>实验</b>

    GD32F303红枫开发板使用手册】第二十 SPI-SPI NAND FLASH读写实验

    通过本实验主要学习以下内容: •SPI通信协议,参考19.2.1东方红开发板使用手册GD32F303 SPI操作方式,参考19.2.2东方红
    的头像 发表于 06-20 09:50 886次阅读
    【<b class='flag-5'>GD</b>32F303红枫<b class='flag-5'>派</b><b class='flag-5'>开发板</b><b class='flag-5'>使用手册</b>】第二十<b class='flag-5'>讲</b> SPI-SPI NAND FLASH读写<b class='flag-5'>实验</b>