• 正文
  • 相关推荐
申请入驻 产业图谱

实战RISC-V嵌入式系统开发 | HPM6750微控制器开发应用实例

07/18 09:22
874
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

在当今技术快速发展的时代,嵌入式系统在我们的生活中扮演了越来越重要的角色。从智能手机汽车电子,再到物联网设备嵌入式技术无处不在,推动着现代社会的进步。随着开源硬件和软件的兴起,RISC-V作为一种新兴的开放源代码指令集架构(ISA),因灵活性和可扩展性而受到了业界的广泛关注和快速采纳。

HPM6750微控制器是一款高性能的微控制器,适用于各种工业、汽车、通信等领域的应用。进行跨平台开发时,开发者需要关注硬件兼容性、软件工具链的选择以及开发环境的配置等关键方面。

本文通过实际的GPIO输出应用实例,全面展示了使用HPM6750微控制器进行开发的过程。无论您是初探RISC-V生态的开发者,还是寻求高性能、开源解决方案的资深工程师,本文都将为您铺就一条清晰、高效的开发路径!

HPM6750的GPIO输出应用实例概述

本实例在野火HPM6750IVM(BTB接口)开发板上实现,仿真器采用野火fireDAP下载器(高速版)、仿真器到开发板的JTAG-UART转接板;另外还有3条Type-C数据线,分别用于fireDAP下载器、开发板USB-OTG接口、开发板电源接口PWR与计算机USB接口的连接。KEY1、KEY2和KEY3按键分别连接HPM6750的带内部上拉电阻的WBUTN(带唤醒功能)、PZ09和PZ11 GPIO口。LED4、LED5和LED6指示灯分别连接HPM6750的PB29、PB30和PB31 GPIO口。

程序上电或按下开发板的RES复位键后,在开始几秒,LED4、LED5和LED6指示灯已同频率闪烁显示,随后3个指示灯常亮。当分别按下KEY1、KEY2和KEY3按键时,LED4、LED5和LED6指示灯做翻转显示,即按键按下时指示灯灭,再次按键按下时亮。

HPM6750EVK 系统架构如图1所示。

图1  HPM6750EVK 系统架构

HPM6750的GPIO输出应用实例旨在展示如何在HPM6750平台上利用GPIO接口实现LED灯的控制以及按键输入的中断响应。通过本设计,可以深入理解HPM6750平台的GPIO配置、中断管理以及基本的输入输出控制。

1.设计目标

对LED灯的控制:通过GPIO输出功能实现对LED灯的控制,包括点亮和熄灭。

对按键输入的响应:通过GPIO输入和中断功能实现对按键操作的响应,当检测到按键操作时,相应的LED灯状态发生变化。

2.设计实现

(1)硬件配置

GPIO配置:使用HPM6750的GPIO0控制器,配置3个LED灯和3个按键的GPIO引脚。LED灯连接到GPIOB的29、30、31引脚,按键连接到GPIOZ的3、9、11引脚。

中断配置:为GPIOZ的3、9、11引脚配置下降沿触发的中断,以检测按键的按下动作。

(2)软件设计

LED闪烁测试:test_gpio_toggle_output函数通过循环切换LED灯的状态,实现LED的闪烁效果,以验证GPIO输出功能。

按键中断响应:test_gpio_input_interrupt函数配置按键GPIO引脚为输入模式,并设置中断触发条件。isr_gpio中断服务程序用于响应按键中断,切换相应LED灯的状态。

消抖处理:在isr_gpio中断服务程序中,未直接实现消抖逻辑。在实际应用中,可以通过软件延时或其他消抖技术来提高按键响应的稳定性。

3.主要函数

(1)board_init:进行板级初始化,如时钟配置、中断系统初始化等。

(2)test_gpio_toggle_output:测试GPIO输出功能,实现LED闪烁。

(3)test_gpio_input_interrupt:配置GPIO输入和中断,准备响应按键操作。

(4)isr_gpio:中断服务程序,用于处理按键引发的中断,切换LED状态。

(5)main:主函数,负责初始化和调用测试函数。

本设计实例通过在HPM6750平台上实现对LED灯的控制和按键响应功能,展示了GPIO接口的基本应用。通过对LED灯的闪烁和按键中断的响应,验证了GPIO的输入输出控制和中断处理能力。此外,本设计也强调了嵌入式系统开发中的硬件配置和软件逻辑设计的重要性。在进一步的研究中,可以探索更多HPM6750平台的高级功能,如PWM控制、ADC读取等,以实现更复杂的嵌入式系统应用。

HPM6750的GPIO输出应用硬件设计

HPM6750与按键的硬件电路如图2所示,KEY1、KEY2和KEY3按键为弹性机械开关,PESD3V3L1BA为3.3V的瞬变电压抑制(Transient Voltage Suppressors,TVS)二极管。瞬变电压抑制(TVS)二极管是一种专门设计用来保护电子设备免受瞬变电压和电压尖峰损害的半导体器件。它们能够快速响应并抑制超出正常工作电压的瞬时过电压,从而保护敏感的电子元件。

图2  HPM6750与按键的硬件电路

HPM6750与LED的硬件电路如图3所示。3个LED指示灯由绿色LED灯构成。

图3  HPM6750与LED指示灯的硬件电路

这些LED的阳极都连接到HPM6750的GPIO引脚,只要控制GPIO引脚的电平输出状态,即可控制LED的亮灭。如果使用的开发板中LED的连接方式或引脚不一样,只需修改程序的相关引脚即可,程序的控制原理相同。

LED 电路是由+3.3V 电源驱动的。当GPIO引脚输出为0时,LED熄灭,输为1时,LED点亮。

HPM6750的GPIO应用软件设计

HPM6750软件设计概述主要围绕两个功能模块展开:GPIO(通用输入输出)的使用和中断处理。通过这个示例程序,展示了如何在HPM6750平台上配置GPIO以控制LED灯的亮灭,并如何设置和处理GPIO中断来响应外部按键事件。该软件设计的详细设计步骤如下:

1.GPIO配置和LED控制

(1)GPIO配置

头文件:程序包含gpio.h头文件,其中定义了与LED和按键相关的GPIO控制器、索引和引脚号,以及LED关闭时的电平状态。

初始化:在test_gpio_toggle_output函数中,通过HPM_IOC控制器的PAD寄存器配置了LED对应的GPIO引脚为输出模式,并设置了初始状态(关闭)。

(2)LED控制

切换LED状态:程序通过gpio_toggle_pin函数在指定的GPIO引脚上切换电平状态,实现LED亮灭的切换。这在test_gpio_toggle_output函数中通过循环实现,以演示LED的闪烁效果。

延时:在LED状态切换之间使用board_delay_ms函数实现了500毫秒的延时,以便观察到LED的闪烁效果。

2.GPIO中断处理

(1)中断配置

输入模式:在test_gpio_input_interrupt函数中,首先将与按键相关的GPIO引脚配置为输入模式。

中断触发方式:程序设置GPIO中断的触发方式为下降沿触发,这意味着当按键被按下时(电平从高到低变化),将触发中断。

中断使能:通过调用gpio_enable_pin_interrupt函数,使能了与按键相关的GPIO引脚的中断功能。

(2)中断服务程序(ISR)

检测中断标志:在isr_gpio函数中,通过调用gpio_check_pin_interrupt_flag函数检查是否有按键相关的GPIO引脚产生了中断。

处理中断:当检测到某个按键的中断时,程序通过调用gpio_toggle_pin函数切换对应LED的状态,并通过gpio_clear_pin_interrupt_flag函数清除中断标志,以便继续接收后续的中断。

3.主函数

(1)初始化:main函数首先调用board_init进行板级初始化。

(2)功能测试:接着调用test_gpio_toggle_output和test_gpio_input_interrupt函数,分别测试LED闪烁和按键中断响应功能。

(3)无限循环:最后,主函数进入一个无限循环中,等待中断事件的发生。

该程序演示了HPM6750平台上如何使用GPIO进行基本的输入输出控制和中断处理。通过控制LED的亮灭来展示GPIO输出功能,同时通过响应按键中断来展示GPIO输入和中断处理能力。这为开发更复杂的嵌入式系统应用提供了基础。

深度剖析RISC-V技术生态全面解读 理论概念+技术生态+开发实例!

▊《基于RISC-V架构的嵌入式系统开发》

作者 李正军 李潇然

本书全面介绍了RISC-V架构及其在嵌入式系统开发中的应用。全书共分13章,主要内容包括:绪论、RISC-V技术生态与实践、RISC-V架构的中断和异常、RISC-V汇编语言程序设计、CH32嵌入式微控制器与最小系统设计、MRS集成开发环境、CH32通用输入输出接口、CH32外部中断、CH32定时器系统、CH32通用同步异步收发器、HPM6700系列高性能微控制器、HPM6750微控制器开发平台和HPM6750微控制器开发应用实例。本书内容丰富,体系先进,结构合理,理论与实践相结合,注重工程应用。

撰  稿  人:杨健亭责任编辑: 李馨馨审  核  人:曹新宇

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

“工控有得聊”是机械工业出版社“机工工控”“机工通信”品牌旗下专业资讯和服务平台,致力于帮助读者在电气、通信、自动化领域里,紧跟前沿资讯,掌握核心技术,快速提升专业素养。工业知识服务平台,分享热点资讯、精选深度技术文章、发布最新书讯。

微信公众号