国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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
    +關注

    關注

    243

    文章

    24594

    瀏覽量

    690797
  • mcu
    mcu
    +關注

    關注

    147

    文章

    18924

    瀏覽量

    398010
  • GPIO
    +關注

    關注

    16

    文章

    1328

    瀏覽量

    56218
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    TPS6106x系列LED驅動芯片:特性、應用與設計要點

    TPS6106x系列LED驅動芯片:特性、應用與設計要點 在電子設備的設計中,LED驅動芯片的選
    的頭像 發表于 02-27 15:35 ?82次閱讀

    MAX7304:集成ESD保護的I2C接口16端口GPIOLED驅動

    MAX7304:集成ESD保護的I2C接口16端口GPIOLED驅動器 在電子設備的設計中,GPIO擴展器和LED
    的頭像 發表于 02-02 15:50 ?129次閱讀

    UCC2753x系列單通道高速柵極驅動器:特性、應用與設計要點詳解

    UCC2753x系列單通道高速柵極驅動器:特性、應用與設計要點詳解 引言 在電子電路設計中,柵極驅動器扮演著至關重要的角色,它能夠有效
    的頭像 發表于 01-09 16:05 ?657次閱讀

    AS32X601的I2C模塊操作EEPROM詳解

    國科安芯推出的AS32X601系列MCU芯片內置的I2C模塊提供了符合工業標準的兩線串行制接口,可用于MCU和外部I2C設備的通訊。I2C總線使用兩條串行線:串行數據線SDA和串行時鐘線SCL
    的頭像 發表于 12-21 21:39 ?960次閱讀
    <b class='flag-5'>AS32X601</b>的I2C模塊操作EEPROM<b class='flag-5'>詳解</b>

    基于 AS32X601 微控制器的定時器模塊(TIM)技術研究與應用實踐

    摘要: 本文全面介紹了國科安芯推出的AS32X601系列微控制器的定時器模塊(TIM),包括其系統架構、功能特性、應用場景以及工程實踐要點。通過對芯片的詳細分析,揭示了其高性能運行的基礎。本文詳細
    的頭像 發表于 08-19 16:44 ?838次閱讀

    【創龍TLT113-MiniEVM開發板試用體驗】點亮LED

    源(3.3V),負極連接GPIO引腳。 點亮條件 :GPIO輸出低電平時形成電流通路(低電平驅動)或高電平驅動(根據電路設計)。 本開發板
    發表于 08-05 21:36

    AS32X601芯片Flash擦寫調試技術解析

    本文聚焦于 國科安芯推出的AS32X601 芯片的 Flash 擦寫調試工作,深入剖析其片內 Flash 存儲器架構,詳述 Flash 控制器功能與運作機制。通過對 Flash 指令集的解讀,梳理
    的頭像 發表于 07-22 13:47 ?755次閱讀
    <b class='flag-5'>AS32X601</b>芯片Flash擦寫調試技術解析

    AS32X601系列MCU硬件最小系統設計與調試方案探析

    推出的AS32X601 系列 MCU 為例,深入探討硬件最小系統設計要點以及硬件調試方案,旨在為相關領域的研究人員和技術人員提供有價值的參考。
    的頭像 發表于 07-22 13:46 ?657次閱讀

    AS32X601驅動系列教程 PLIC_中斷應用詳解

    平臺中斷控制器(Platform Level Interrupt Controller,PLIC)是國科安芯AS32系列MCU芯片的中斷控制器,主要對中斷源進行采樣,優先級仲裁和分發。各外設中斷統一
    的頭像 發表于 05-23 17:10 ?709次閱讀
    <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 ?887次閱讀
    <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 ?826次閱讀
    <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 ?752次閱讀
    <b class='flag-5'>AS32X601</b><b class='flag-5'>驅動</b><b class='flag-5'>系列</b>教程 SMU_系統時鐘<b class='flag-5'>詳解</b>

    面向工業與汽車領域的高安全可靠MCU——AS32X601系列芯片解析

    AS32X601系列是國科安芯研發的32位RISC-V架構MCU,專為高安全性、高可靠性場景設計,覆蓋工業控制、汽車電子等關鍵領域。其核心優勢在于通過硬件級安全機制、多重冗余設計及功能安全認證,滿足
    的頭像 發表于 03-14 16:40 ?1130次閱讀

    AS32X601芯片技術剖析

    芯片簡介 AS32X601系列MCU是國產高可靠嵌入式處理器的重要突破,其企業宇航級型號AS32S601針對空間輻射環境與極端溫度條件優化,滿足衛星載荷控制、航天器運動控制等場景需求。該芯片采用
    的頭像 發表于 03-14 16:17 ?1089次閱讀

    AS32X601雙核鎖步MCU技術優勢分析

    AS32X601是國科安芯公司研制的一系列基于32位RISC-V指令集車規級MCU處理器芯片。主頻高達180MHz,支持雙核鎖步架構,基于軟錯誤防護技術加持,顯著提高芯片安全性能。產品具有高安全、低
    的頭像 發表于 03-07 16:12 ?973次閱讀