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

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

3天内不再提示

AS32X601驱动系列教程 GPIO_点亮LED详解

安芯 ? 来源:jf_29981791 ? 作者:jf_29981791 ? 2025-05-23 16:14 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式开发的奇妙旅程中,GPIO(通用输入输出接口)作为芯片与外部世界交互的重要桥梁,扮演着不可或缺的角色。从简单的 LED 灯控制,到复杂的外设通信,GPIO 的灵活运用为开发者打开了无限可能的大门。自本章开始,正式开始用代码控制AS32x601各外设完成功能配置。

需要注意的是,AS32X601提供了8组GPIO,其中GPIOA~GPIOG寄存器操作完全一致,但在使用GPIOH的时候,寄存器列表中间少了一个32位寄存器,因此在使用过程中容易造成误操作,我们在驱动库中已经做了映射,若想要自行操作寄存器进行控制,需要格外注意这一点。

另外,在芯片的IO复用表中,其默认功能并非全部都是GPIO,还包含了MUL类型,使用此类型IO时,需要先将复用配置为GPIO功能,在完成接下来的操作。

硬件设计

AS32x601评估板板载3颗LED灯用于IO输出评估,原理图如下:

根据上图可以知道,LED“正极”接电源,“负极”接GPIOG三个引脚,当IO拉低时,LED亮,IO输出高时,LED灭,据此设计控制逻辑。

程序设计

操作流程

  1. 开led对应IO时钟
  2. 检查对应引脚默认配置,是否需要复用调整
  3. 初始化gpio结构体
  4. 控制gpio输出

主要代码分析

复制上一小节的工程模板,在工程目录下新建Bsp文件夹用于存放led相关控制代码,在IAR工程界面添加led.c和led.h文件。

在led.c文件中添加相应头文件,之后编写led初始化代码。

  1. /*
    • Function: User_LED_Init
    • Description: Configure LED GPIO.
    • Return: None.
  2. */
  3. void User_LED_Init()
  4. {
  5. GPIO_InitTypeDef GPIO_InitStructure;
  6. GPIOG_CLK_ENABLE();
  7. /* GPIOB Configure */
  8. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15;
  9. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  10. GPIO_InitStructure.GPIO_OType = GPIO_Out_PP;
  11. GPIO_InitStructure.GPIO_OStrength = GPIO_OStrength_9mA;
  12. GPIO_Init(GPIOG, &GPIO_InitStructure);
  13. }

在上述代码清单中,根据电路原理图,led与mcu的PG10、14、15引脚相连,因此我们首先打开GPIOG的时钟使能;

之后初始化gpio结构体,通过或操作同时对三个引脚进行初始化,配置推挽输出,同时配置io输出能力位9mA。

接下来,我们用宏定义的形式编写LED的控制函数。

  1. #define LED1_ON() GPIO_WriteBits(GPIOG, GPIO_Pin_15, GPIO_OCtrl_Vol)
  2. #define LED1_OFF() GPIO_WriteBits(GPIOG, GPIO_Pin_15, GPIO_OCtrl_Voh)
  3. #define LED1_TOGGLE() GPIO_ToggleBits(GPIOG, GPIO_Pin_15)
  4. #define LED2_ON() GPIO_WriteBits(GPIOG, GPIO_Pin_14, GPIO_OCtrl_Vol)
  5. #define LED2_OFF() GPIO_WriteBits(GPIOG, GPIO_Pin_14, GPIO_OCtrl_Voh)
  6. #define LED2_TOGGLE() GPIO_ToggleBits(GPIOG, GPIO_Pin_14)
  7. #define LED3_ON() GPIO_WriteBits(GPIOG, GPIO_Pin_10, GPIO_OCtrl_Vol)
  8. #define LED3_OFF() GPIO_WriteBits(GPIOG, GPIO_Pin_10, GPIO_OCtrl_Voh)
  9. #define LED3_TOGGLE() GPIO_ToggleBits(GPIOG, GPIO_Pin_10)

在led.h文件中添加如上代码,AS32驱动库中包含了引脚控制输出函数以及引脚翻转控制函数,通过宏的形式完成led控制名称的转换,便于理解。

此时,代码并不算完成,之后我们需要查询芯片设计手册中,GPIOG所在的总线,在系统时钟配置函数中需要打开对应总线时钟,具体方式参考上一小节。

最后,编写主函数代码,控制三个led灯流水闪烁。

  1. void main()
  2. {
  3. Systemclock_Init();
  4. delay_init(SMU_ClocksStruct.AXIBus0_Frequency/1000000);
  5. /* Initialize LED */
  6. User_LED_Init();
  7. while(1)
  8. {
  9. LED1_ON();LED2_OFF();LED3_OFF();
  10. delay_ms(100);
  11. LED1_OFF();LED2_ON();LED3_OFF();
  12. delay_ms(100);
  13. LED1_OFF();LED2_OFF();LED3_ON();
  14. delay_ms(100);
  15. }
  16. }

补充

在这个代码中调用了一个延时函数,该函数位于库文件System目录下,利用RISCV的CSR定时器,可以理解为系统定时器编写的精确延时函数,因此需要对此函数进行初始化,并传入当前系统时钟。

  1. delay_init(SMU_ClocksStruct.AXIBus0_Frequency/1000000);

SMU_ClocksStruct.AXIBus0_Frequency就是在系统时钟初始化函数中最后一个函数调用所读回来的所有总线时钟,由于Core时钟与AXIBus0同频,所以在此处就利用该参数进行延时初始化,除1000000的作用是,延时计算的时候单位为MHz,所以把后边的数量级给除掉。

审核编辑 黄宇

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

    关注

    242

    文章

    23951

    浏览量

    677045
  • mcu
    mcu
    +关注

    关注

    146

    文章

    18092

    浏览量

    371317
  • GPIO
    +关注

    关注

    16

    文章

    1291

    浏览量

    54466
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于 AS32X601 微控制器的定时器模块(TIM)技术研究与应用实践

    摘要: 本文全面介绍了国科安芯推出的AS32X601系列微控制器的定时器模块(TIM),包括其系统架构、功能特性、应用场景以及工程实践要点。通过对芯片的详细分析,揭示了其高性能运行的基础。本文详细
    的头像 发表于 08-19 16:44 ?103次阅读

    【创龙TLT113-MiniEVM开发板试用体验】点亮LED

    源(3.3V),负极连接GPIO引脚。 点亮条件 :GPIO输出低电平时形成电流通路(低电平驱动)或高电平驱动(根据电路设计)。 本开发板
    发表于 08-05 21:36

    AS32X601芯片Flash擦写调试技术解析

    本文聚焦于 国科安芯推出的AS32X601 芯片的 Flash 擦写调试工作,深入剖析其片内 Flash 存储器架构,详述 Flash 控制器功能与运作机制。通过对 Flash 指令集的解读,梳理
    的头像 发表于 07-22 13:47 ?208次阅读
    <b class='flag-5'>AS32X601</b>芯片Flash擦写调试技术解析

    AS32X601系列MCU硬件最小系统设计与调试方案探析

    推出的AS32X601 系列 MCU 为例,深入探讨硬件最小系统设计要点以及硬件调试方案,旨在为相关领域的研究人员和技术人员提供有价值的参考。
    的头像 发表于 07-22 13:46 ?188次阅读

    【VisionFive 2单板计算机试用体验】GPIO点亮LED

    测试板卡GPIO点亮LED灯。 一、搭建环境 1.1、文档 按照官方的应用文档搭建测试环境GPIO点亮
    发表于 06-30 07:31

    AS32X601驱动系列教程 PLIC_中断应用详解

    平台中断控制器(Platform Level Interrupt Controller,PLIC)是国科安芯AS32系列MCU芯片的中断控制器,主要对中断源进行采样,优先级仲裁和分发。各外设中断统一
    的头像 发表于 05-23 17:10 ?273次阅读
    <b class='flag-5'>AS32X601</b><b class='flag-5'>驱动</b><b class='flag-5'>系列</b>教程 PLIC_中断应用<b class='flag-5'>详解</b>

    AS32X601驱动系列教程 USART_串口通讯详解

    国科安芯的AS32系列MCU芯片集成7路USART,能够灵活地与外部设备进行全双工数据交换,满足外部设备对工业标准 NRZ 异步串行数据格式的要求。USART 通过小数波特率发生器实现了多种波特率
    的头像 发表于 05-23 16:54 ?441次阅读
    <b class='flag-5'>AS32X601</b><b class='flag-5'>驱动</b><b class='flag-5'>系列</b>教程 USART_串口通讯<b class='flag-5'>详解</b>

    AS32X601驱动系列教程 GPIO_按键检测详解

    在嵌入式系统开发中,GPIO(通用输入输出端口)是实现硬件与软件交互的关键组件。本节主要利用的时GPIO的输入采集功能,本节的主要功能为,读取板载按键,当按键按下时,对应led亮起,抬起按键,对应
    的头像 发表于 05-23 16:44 ?363次阅读
    <b class='flag-5'>AS32X601</b><b class='flag-5'>驱动</b><b class='flag-5'>系列</b>教程 <b class='flag-5'>GPIO_</b>按键检测<b class='flag-5'>详解</b>

    AS32X601驱动系列教程 SMU_系统时钟详解

    时钟和复位的管理。在默认状态下SMU工作在IDLE状态。只有接收到PMU的使能信号后才开始工作。SMU模块会根据PMU的指令自动配置COR、AXIBUS0/1/2等总线的时钟和复位。 需要注意的是,MCU芯片AS32X601可通过BOOT选择从外部QSPI Flash启动和内部PFlash启动,
    的头像 发表于 05-23 16:01 ?401次阅读
    <b class='flag-5'>AS32X601</b><b class='flag-5'>驱动</b><b class='flag-5'>系列</b>教程 SMU_系统时钟<b class='flag-5'>详解</b>

    HTR3310 10路LED驱动器和GPIO控制器中文手册

    ? ? ? HTR3310是一款10路多功能LED驱动器和GPIO控制器2.5V~5.5V电源供电。10个IO端口中的任何一个都可以配置为LED模式或
    发表于 04-14 16:31 ?1次下载

    HTR3316 16路LED驱动器和GPIO控制器中文手册

    ? ? ?HTR3316是一款16路多功能LED驱动器和GPIO控制器,2.5V~5.5V电源供电。16个IO端口中的任何一个都可以配置为LED模式或
    发表于 04-11 17:51 ?0次下载

    面向工业与汽车领域的高安全可靠MCU——AS32X601系列芯片解析

    AS32X601系列是国科安芯研发的32位RISC-V架构MCU,专为高安全性、高可靠性场景设计,覆盖工业控制、汽车电子等关键领域。其核心优势在于通过硬件级安全机制、多重冗余设计及功能安全认证,满足
    的头像 发表于 03-14 16:40 ?591次阅读

    AS32X601芯片技术剖析

    芯片简介 AS32X601系列MCU是国产高可靠嵌入式处理器的重要突破,其企业宇航级型号AS32S601针对空间辐射环境与极端温度条件优化,满足卫星载荷控制、航天器运动控制等场景需求。该芯片采用
    的头像 发表于 03-14 16:17 ?600次阅读

    AS32X601双核锁步MCU技术优势分析

    AS32X601是国科安芯公司研制的一系列基于32位RISC-V指令集车规级MCU处理器芯片。主频高达180MHz,支持双核锁步架构,基于软错误防护技术加持,显著提高芯片安全性能。产品具有高安全、低
    的头像 发表于 03-07 16:12 ?521次阅读

    HTR3306 6路LED驱动器和GPIO控制器

    HTR3306是一款6路多功能LED驱动器和GPIO控制器,2.5V~5.5V电源供电。10个IO端口中的任何一个都可以配置为LED模式或GPIO
    的头像 发表于 11-20 15:57 ?632次阅读
    HTR3306  6路<b class='flag-5'>LED</b><b class='flag-5'>驱动</b>器和<b class='flag-5'>GPIO</b>控制器