在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    23820

    瀏覽量

    673374
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17954

    瀏覽量

    365451
  • GPIO
    +關注

    關注

    16

    文章

    1280

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【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 ?191次閱讀
    <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 ?329次閱讀
    <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 ?241次閱讀
    <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 ?320次閱讀
    <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 ?487次閱讀

    AS32X601芯片技術剖析

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

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

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

    【敏矽微ME32G070開發板免費體驗】+ADC測試與LED點亮

    *附件:【敏矽微ME32G070開發板免費體驗】+ADC測試與LED點亮.docx【敏矽微ME32G070開發板免費體驗】+ADC測試與LED點亮 收到了敏矽微ME32G070開發板,
    發表于 12-16 19:00

    HTR3306 6路LED驅動器和GPIO控制器

    HTR3306是一款6路多功能LED驅動器和GPIO控制器,2.5V~5.5V電源供電。10個IO端口中的任何一個都可以配置為LED模式或GPIO
    的頭像 發表于 11-20 15:57 ?570次閱讀
    HTR3306  6路<b class='flag-5'>LED</b><b class='flag-5'>驅動</b>器和<b class='flag-5'>GPIO</b>控制器

    HTR3310 10路LED驅動器和GPIO控制器

    HTR3310是一款10路多功能LED驅動器和GPIO控制器,2.5V~5.5V電源供電。10個IO端口中的任何一個都可以配置為LED模式或GPIO
    的頭像 發表于 10-08 09:58 ?571次閱讀
    HTR3310 10路<b class='flag-5'>LED</b><b class='flag-5'>驅動</b>器和<b class='flag-5'>GPIO</b>控制器

    HTR3316 16路LED驅動器和GPIO控制器

    HTR3316是一款16路多功能LED驅動器和GPIO控制器,2.5V~5.5V電源供電。16個IO端口中的任何一個都可以配置為LED模式或GPIO
    的頭像 發表于 09-29 14:41 ?695次閱讀
    HTR3316 16路<b class='flag-5'>LED</b><b class='flag-5'>驅動</b>器和<b class='flag-5'>GPIO</b>控制器

    HTR3310 10路LED驅動器和GPIO控制器

    HTR3310是一款10路多功能LED驅動器和GPIO控制器,2.5V~5.5V電源供電。10個IO端口中的任何一個都可以配置為LED模式或GPIO
    的頭像 發表于 09-24 17:56 ?825次閱讀
    HTR3310  10路<b class='flag-5'>LED</b><b class='flag-5'>驅動</b>器和<b class='flag-5'>GPIO</b>控制器
    主站蜘蛛池模板: 国产成人精品免费视频大全可播放的 | 国产在线观看午夜不卡 | 狠狠色丁香婷婷综合久久来 | 国产又爽又黄又粗又大 | 1024手机看片国产旧版你懂的 | 黄色污网站在线观看 | 红怡院欧洲 | 五月综合激情 | 视频三区 | 天天艹天天 | 亚洲小视频在线播放 | 亚在线 | 日本免费一区二区视频 | brazzersvideosexhd欧美高清 | 久久青草91免费观看 | 超级狂色而且免费又超好看 | 中文字幕在线二区 | 五月天丁香色 | 狠狠狠色丁香婷婷综合激情 | 奇米影视五月天 | 免费播放一区二区三区 | 午夜免费免费啪视频观看 | 国产三级精品三级在线观看 | 小视频国产 | 福利视频一区二区牛牛 | 操夜夜 | 色视频在线播放 | 高h道具触手play肉男男 | 女人爽到喷水的视频大全在线观看 | 噜噜吧噜噜色 | 成人精品一区二区三区电影 | 亚洲国产人成在线观看 | 天天操狠狠操夜夜操 | 免费看成年视频网页 | 午夜影院欧美 | 欧美怡红院免费全部视频 | 99亚洲自拍| 日本黄色三级视频 | 色噜噜亚洲男人的天堂 | 天天看天天摸天天操 | 免费观看欧美成人1314w色 |