精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

I.MX6ULL官方SDK驅動LED燈

華仔的編程隨筆 ? 2023-05-03 20:53 ? 次閱讀

官方SDK簡介

I.MX6ULL官方提供了裸機SDK包,使得學習上手冊很。I.MX6ULL的SDK包在NXP官網下載https://www.nxp.com/search?keyword=i.MX%25206ULL%2520SDK&start=0&category=software

9307d6fc6f838e6b206f4a507577ae20ae19084379e6172bb46e96245bd60fff.png

當然原子在資料盤中也給我們提供了,在目錄L:\\baidudownloads\\【正點原子】阿爾法Linux開發板(A盤)-基礎資料\\【正點原子】阿爾法Linux開發板(A盤)-基礎資料\\07、I.MX6U參考資料\\03、I.MX6ULL SDK包目錄下面:

c88fe0500e157ab0f2c77fb872c412cb9a4fe01e06595812db44d55940512818.png

雙擊安裝程序,在目錄選擇時,指定目錄,好在以后需要時找得到

f07c4c158a184c15364346a923496915873760a4c8a4f7288029936ceb6b43a6.png

安裝好后,文件夾如下:

77f0d7ae24bb5b845803e75b0f3296cafdaae2c781ae8ad9c7cb59206e0a33bc.png

我們裸機開發的話用到以下三個文件:

fsl_common.h:位置為 SDK_2.2_MCIM6ULL\\devices\\MCIMX6Y2\\drivers\\fsl_common.h。

fsl_iomuxc.h: 位置為 SDK_2.2_MCIM6ULL\\devices\\MCIMX6Y2\\drivers\\fsl_iomuxc.h。

MCIMX6Y2.h: 位置為 SDK_2.2_MCIM6ULL\\devices\\MCIMX6Y2\\MCIMX6YH2.h。

整個 SDK 包我們就需要上面這三個文件,把這三個文件準備好,我們后面移植要用。

41b0d34f6e94f082bb0106c780b717242e053a36126d88ca579a18a5b878d749.png

98a18e4ddac692bdbb1bab3b645d14d11ade44ec5a79295edc2e3c319353135b.png

我們把這三個文拷到一個文件夾,以備以后開發使用。

b0cfb64bc30566012cb92a4af6eb00b543ac032d70606b4b3567e74bc1fbb02f.png

編寫實驗程序

  1. 新建一個名為cc.h的頭文件,cc.h中存放著一些SDK庫文件需要使用的數據類型,如下所示:
/***************************************************************
Copyright ? lugl.
文件名 : main.h
作者 : 劉建華
版本 : V1.0
描述 : 有關變量的類型定義,nxp官方SDK的一些移植文件會用到。
其他 : 此程序學習左中凱老師課程
日志 : 初版 2023/5/3 劉建華修改
**************************************************************/
/************************************************************

* 
* 自定義一些數據類型供庫文件使用
* 
* /
  */
  #define __I    volatile
  #define __O    volatile
  #define __IO   volatile

#define ON  1
#define OFF 0

typedef signed char          int8_t;
typedef signed short   int   int16_t;
typedef signed         int   int32_t;
typedef unsigned       char  uint8_t;
typedef unsigned short int   uint16_t;
typedef unsigned       int   uint32_t;
typedef unsigned long long   uint64_t;
typedef signed   char        s8;
typedef signed   short int   s16;
typedef signed   int         s32;
typedef signed   long long int s64;
typedef unsigned char        u8;
typedef unsigned short int   u16;
typedef unsigned int         u32;
typedef unsigned long long int u64;

#endif /* __CC_H */
  1. start.S:
/***************************************************************
Copyright ? lugl.
文件名 : start.s
作者 : 劉建華
版本 : V1.0
描述 : I.MX6U-ALPHA/I.MX6ULL 開發板啟動文件,完成 C 環境初始化,
C 環境初始化完成以后跳轉到 C 代碼。
其他 : 此程序學習左中凱老師課程
日志 : 初版 2023/5/3 劉建華修改
**************************************************************/
.global _start       @全局標號

/*

* 描述:_start函數,程序從此函靈敏開始執行,
* ```
  此函數主要功能是設置C運行環境

*/

_start:

/*  進入SVC模式 */
mrs r0, cpsr
bic r0, r0, #0x1f    @ 將r0的低5位清零,也就是cpsr的M0-M4
orr r0, r0, #0x13    @ r0或上0x13,表示使用SVC模式
msr cpsr, r0         @ 將r0 的數據寫入到cpsr_c中

ldr sp, =0x80200000  @ 設置棧指針
b main               @ 跳轉到main函數(再也不用回來了)
  1. main.c
/***************************************************************
Copyright ? lugl.
文件名 : main.c
作者 : 劉建華
版本 : V1.0
描述 : 使用C語言來點亮開發板的LED燈,基于官方的SDK來開發。
學習掌握如何用c語言來完成對I.MX6U的GPIO初始化和控制
其他 : 此程序學習左中凱老師課程
需要使用到的文件有fsl.common.h、fsl_iomuxc.h、MCIMX6Y2.h
日志 : 初版 2023/5/3劉建華修改
**************************************************************/

#include "fsl_common.h"
#include "fsl_iomuxc.h"
#include "MCIMX6Y2.h"

/***

* @description :使能I.MX6ULL所有外設時鐘
* @param       :無
* @return      :無
* 

***/
void clk_enable(void)
{
CCM->CCGR0 = 0xFFFFFFFF;
CCM->CCGR1 = 0xFFFFFFFF;
CCM->CCGR2 = 0xFFFFFFFF;
CCM->CCGR3 = 0xFFFFFFFF;
CCM->CCGR4 = 0xFFFFFFFF;
CCM->CCGR5 = 0xFFFFFFFF;
CCM->CCGR6 = 0xFFFFFFFF;
}

/***

* @description :初始化LED對應的GPIO
* @param       :無
* @return      :無
* 

*/
void led_init(void)
{
/* 初始化IO 復用 */
IOMUXC_SetPinMux(IOMUXC_GPIO1_IO03_GPIO1_IO03,0);
/* 配置 IO的屬性 */
IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO03_GPIO1_IO03, 0x10b0);
/* 初始化GPIO 設置GPIO1_IO03  為輸出*/
GPIO1->GDIR |= (1<<3);
/* 設置GPIO1——IO03為低電平,打開LED0 */
GPIO1->DR &= ~(1<<3);
}

/************************************************************

* @descriptions: 打開LED燈
* @param       : 無
* @return      : 無
  *************************************************************/
void led_on(void)
{
/*
  * 將GPIO1_DR 的bit3清零,打開led0燈
    */
    GPIO1->DR &= ~(1<<3);
    }

/************************************************************

* @descriptions: 關閉LED燈
* @param       : 無
* @return      : 無
  *************************************************************/
void led_off(void)
{
/*
  * 將GPIO1_DR 的bit3置1,關閉led0燈
    */
    GPIO1->DR |= (1<<3);
    }

/************************************************************

* @descriptions: 短時間延時函數
* @param -n    : 要延時循環次數,模式延時
* @return      : 無
  *************************************************************/
  void delay_short(volatile unsigned int n)
  {
  while (n--)
  {
  ;
  }
  }

/************************************************************

* @descriptions: 延時函數,在396MHz的主頻下延時時間大約為1ms
* @param -n    : 要延時的ms數
* @return      : 無
  *************************************************************/
  void delay(volatile unsigned int n)
  {
  while (n--)
  {
  delay_short(0x7ff);
  }

}

/************************************************************

* @descriptions: main函數
* @param       : 無
* @return      : 無
  *************************************************************/
  int main(void)
  {
  clk_enable();  //使能所有時鐘
  led_init();    //初始化LED
  
  while (1)
  {
  led_on();   //打開LED
  delay(500); //延時
  led_off();  //關閉LED
  delay(500);
  }
  return 0;
  }
  1. lds、makefile 拷貝前面的就OK,
  2. 把文件放到虛擬機上,運行make,就得到ledc.bin文件,燒寫到SD卡

06725e846809d30cc9c26c158f351d857296e903dcf5017b1021362457fe6ad2.png

5dd6650983ad8c4b13699cee3c783f91f12640f33acf307b87f1dfc80e9ac81b.png

經驗

教程上說,三個SDK文件需要做相應的修改,我們在編譯時,根據錯誤提示修改就行了。這次的實驗主要體驗SDK在裸機開發方面所提供的方便。特別是宏定義來一給一些固定的參數

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

    關注

    240

    文章

    22908

    瀏覽量

    650183
  • NXP
    NXP
    +關注

    關注

    60

    文章

    1243

    瀏覽量

    181557
  • 開發板
    +關注

    關注

    25

    文章

    4771

    瀏覽量

    96197
  • SDK
    SDK
    +關注

    關注

    3

    文章

    1007

    瀏覽量

    45426
  • i.MX6
    +關注

    關注

    1

    文章

    37

    瀏覽量

    16251
收藏 人收藏

    評論

    相關推薦

    i.MX6ULL 驅動開發7—按鍵輸入捕獲與GPIO輸入配置與高低電平讀取

    本篇主要介紹了i.MX6ULL的按鍵檢測的使用,主要的知識點是設備樹的修改,以及GPIO的輸入配置與高低電平的讀取。
    的頭像 發表于 05-24 09:11 ?5943次閱讀
    <b class='flag-5'>i.MX6ULL</b> <b class='flag-5'>驅動</b>開發7—按鍵輸入捕獲與GPIO輸入配置與高低電平讀取

    使用i.MX6ULL開發板進行Linux根文件系統的完善

    上一篇推文講了怎么移植根文件系統,并在i.MX6ULL開發板中運行起來,但是會出現一些提示,現在來進行根文件的完善。
    發表于 10-17 11:13 ?706次閱讀

    移植NXP官方linux 5.4內核到i.MX6ULL開發板

    本文描述移植NXP官方 linux 5.4 內核到i.MX6ULL開發板。
    發表于 12-19 11:10 ?1897次閱讀

    迅為I.MX6ULL終結者開發板支持JTAG調試

    i.MX6ULL SDK開發包NXP官方提供了i.MX6ULLSDK開發包, 這個SDK包提供
    發表于 05-06 14:09

    i.MX6ULL開發板硬件資源

    迅為i.MX6ULL 終結者開發板硬件資源非常豐富,幾乎將 i.MX6ULL 芯片的所有資源都擴展引出到底板上了,底板提供了豐富的外設接口,開發板的尺寸是 190mm*125mm,充分考慮了人性化設計,整體顯得十分大。
    發表于 12-29 06:18

    初識 i.MX6ULL 寄存器

    裸機開發_L1_匯編LED實驗0. 本節目標1. 硬件層電路2. 初識 i.MX6ULL 寄存器2.1 i.MX6ULL 時鐘控制寄存器2.2 i.MX6ULL IO復用寄存器2.3
    發表于 12-20 07:13

    關于i.MX6ULL配置GPIO

    正如學習C語言時寫的第一段代碼都是“HelloWorld!”,接觸一款新的處理器時往往是從點亮一個LED開始;而點亮一個LED,則需要操作這款芯片的GPIO外設。那么作為廣受歡迎的i.MX6ULL
    發表于 08-05 10:37

    I.MX6ULL UART傳輸問題求解

    I.MX6ULL UART傳輸問題
    發表于 04-21 08:09

    珠海明遠智睿科技聯合NXP強勢推出i.MX6ull核心板

    NXP I.MX6ULL是一個高性能、低功耗、高性價比處理器系列,基于ARM Cortex-A7內核,主頻可達900MHz。i.MX 6ULL應用處理器包括一個集成的電源管理模塊,可以省掉外部
    發表于 04-24 14:10 ?505次閱讀

    飛凌i.MX6ULL開發板的評測,再次進階擁有更高的性價比

    處理器MCIMX6Y2開發設計,采用先進的ARMCortex-A7內核,運行速度高達800MHz。i.MX6ULL應用處理器包括一個集成的電源管理模塊,降低了外接電源的復雜性,并簡化了上電時序。 i.MX6ULL
    發表于 10-27 11:55 ?1382次閱讀
    飛凌<b class='flag-5'>i.MX6ULL</b>開發板的評測,再次進階擁有更高的性價比

    基于NXP i.MX6ULL處理器的FETMX6ULL-C核心板

    “性價比高,功能接口豐富,資料齊全,穩定性強”這是許多用戶對飛凌FETMX6ULL-S核心板的評價。作為NXP公司一顆經典的MPU,i.MX6ULL的市場認可度無需多言。而作為NXP公司的金牌
    發表于 04-11 15:05 ?1058次閱讀
    基于NXP <b class='flag-5'>i.MX6ULL</b>處理器的FETMX<b class='flag-5'>6ULL</b>-C核心板

    i.MX6ULL驅動開發4——點亮LED(寄存器版)

    本篇主要介紹了如何通過操作寄存器來點亮i.MX6ULL開發板上的led,通過編寫LED對應的驅動程序和應用程序,實現程序設計的分層。
    的頭像 發表于 05-21 21:26 ?2842次閱讀
    【<b class='flag-5'>i.MX6ULL</b>】<b class='flag-5'>驅動</b>開發4——點亮<b class='flag-5'>LED</b>(寄存器版)

    基于i.MX6ULL點亮LED

    都說入門一款芯片的第一步是點亮LED,但是i.MX6ULL入門門檻比較高,特別是通過自學入門的,這個系列已經寫了好久了,最近打算在項目不急的時候加快一下學習進度,現在就開始學習一下怎么點亮一個LED
    的頭像 發表于 03-06 09:09 ?693次閱讀

    【北京迅為】i.MX6ULL開發板移植 Debian 文件系統

    【北京迅為】i.MX6ULL開發板移植 Debian 文件系統
    的頭像 發表于 02-10 15:34 ?1012次閱讀
    【北京迅為】<b class='flag-5'>i.MX6ULL</b>開發板移植 Debian 文件系統

    基于i.MX6ULL的掉電檢測設計與軟件測試

    基于i.MX6ULL的掉電檢測設計與軟件測試基于i.MX6ULL平臺設計實現掉電檢測功能,首先選擇一路IO,利用IO電平變化觸發中斷,在編寫驅動時捕獲該路GPIO的中斷,然后在中斷響應函數中發
    的頭像 發表于 11-09 10:40 ?688次閱讀
    基于<b class='flag-5'>i.MX6ULL</b>的掉電檢測設計與軟件測試