女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

AS32X601驅動系列教程 GPIO_點亮LED詳解

安芯 ? 來源:jf_29981791 ? 作者:jf_29981791 ? 2025-05-23 16:14 ? 次閱讀

嵌入式開發(fā)的奇妙旅程中,GPIO(通用輸入輸出接口)作為芯片與外部世界交互的重要橋梁,扮演著不可或缺的角色。從簡單的 LED 燈控制,到復雜的外設通信,GPIO 的靈活運用為開發(fā)者打開了無限可能的大門。自本章開始,正式開始用代碼控制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輸出

主要代碼分析

復制上一小節(jié)的工程模板,在工程目錄下新建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所在的總線,在系統(tǒng)時鐘配置函數中需要打開對應總線時鐘,具體方式參考上一小節(jié)。

最后,編寫主函數代碼,控制三個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定時器,可以理解為系統(tǒng)定時器編寫的精確延時函數,因此需要對此函數進行初始化,并傳入當前系統(tǒng)時鐘。

  1. delay_init(SMU_ClocksStruct.AXIBus0_Frequency/1000000);

SMU_ClocksStruct.AXIBus0_Frequency就是在系統(tǒng)時鐘初始化函數中最后一個函數調用所讀回來的所有總線時鐘,由于Core時鐘與AXIBus0同頻,所以在此處就利用該參數進行延時初始化,除1000000的作用是,延時計算的時候單位為MHz,所以把后邊的數量級給除掉。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23696

    瀏覽量

    670854
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17831

    瀏覽量

    360303
  • GPIO
    +關注

    關注

    16

    文章

    1271

    瀏覽量

    53554
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    解鎖Air780EPM:N種GPIO操控LED的實戰(zhàn)技巧!

    ——通過硬件層精確控制電路參數,結合LuatOS高效API實現快速原型開發(fā),適用于智能照明、狀態(tài)指示等物聯(lián)網場景。 ? 一、GPIO直接驅動LED 1.1?適用場景 低功耗場景:LED
    的頭像 發(fā)表于 05-28 16:56 ?128次閱讀
    解鎖Air780EPM:N種<b class='flag-5'>GPIO</b>操控<b class='flag-5'>LED</b>的實戰(zhàn)技巧!

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

    平臺中斷控制器(Platform Level Interrupt Controller,PLIC)是國科安芯AS32系列MCU芯片的中斷控制器,主要對中斷源進行采樣,優(yōu)先級仲裁和分發(fā)。各外設中斷統(tǒng)一
    的頭像 發(fā)表于 05-23 17:10 ?123次閱讀
    <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,能夠靈活地與外部設備進行全雙工數據交換,滿足外部設備對工業(yè)標準 NRZ 異步串行數據格式的要求。USART 通過小數波特率發(fā)生器實現了多種波特率
    的頭像 發(fā)表于 05-23 16:54 ?247次閱讀
    <b class='flag-5'>AS32X601</b><b class='flag-5'>驅動</b><b class='flag-5'>系列</b>教程 USART_串口通訊<b class='flag-5'>詳解</b>

    AS32X601驅動系列教程 GPIO_按鍵檢測詳解

    在嵌入式系統(tǒng)開發(fā)中,GPIO(通用輸入輸出端口)是實現硬件與軟件交互的關鍵組件。本節(jié)主要利用的時GPIO的輸入采集功能,本節(jié)的主要功能為,讀取板載按鍵,當按鍵按下時,對應led亮起,抬起按鍵,對應
    的頭像 發(fā)表于 05-23 16:44 ?128次閱讀
    <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_系統(tǒng)時鐘詳解

    時鐘和復位的管理。在默認狀態(tài)下SMU工作在IDLE狀態(tài)。只有接收到PMU的使能信號后才開始工作。SMU模塊會根據PMU的指令自動配置COR、AXIBUS0/1/2等總線的時鐘和復位。 需要注意的是,MCU芯片AS32X601可通過BOOT選擇從外部QSPI Flash啟動和內部PFlash啟動,
    的頭像 發(fā)表于 05-23 16:01 ?251次閱讀
    <b class='flag-5'>AS32X601</b><b class='flag-5'>驅動</b><b class='flag-5'>系列</b>教程 SMU_系統(tǒng)時鐘<b class='flag-5'>詳解</b>

    HTR3310 10路LED驅動器和GPIO控制器中文手冊

    ? ? ? HTR3310是一款10路多功能LED驅動器和GPIO控制器2.5V~5.5V電源供電。10個IO端口中的任何一個都可以配置為LED模式或
    發(fā)表于 04-14 16:31 ?1次下載

    HTR3316 16路LED驅動器和GPIO控制器中文手冊

    ? ? ?HTR3316是一款16路多功能LED驅動器和GPIO控制器,2.5V~5.5V電源供電。16個IO端口中的任何一個都可以配置為LED模式或
    發(fā)表于 04-11 17:51 ?0次下載

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

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

    AS32X601芯片技術剖析

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

    AS32X601雙核鎖步MCU技術優(yōu)勢分析

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

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

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

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

    HTR3306是一款6路多功能LED驅動器和GPIO控制器,2.5V~5.5V電源供電。10個IO端口中的任何一個都可以配置為LED模式或GPIO
    的頭像 發(fā)表于 11-20 15:57 ?498次閱讀
    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
    的頭像 發(fā)表于 10-08 09:58 ?514次閱讀
    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
    的頭像 發(fā)表于 09-29 14:41 ?607次閱讀
    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
    的頭像 發(fā)表于 09-24 17:56 ?766次閱讀
    HTR3310  10路<b class='flag-5'>LED</b><b class='flag-5'>驅動</b>器和<b class='flag-5'>GPIO</b>控制器