新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 自學Cortex-M3(1):GPIO實驗1

        自學Cortex-M3(1):GPIO實驗1

        作者: 時間:2012-07-04 來源:網(wǎng)絡(luò) 收藏

        本文引用地址:http://www.104case.com/article/148808.htm

          void DelayMs (unsigned long tick)

          {

          unsigned long systickcnt;

          systickcnt = SysTickCnt;

          while ((SysTickCnt - systickcnt) tick);

          }

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

          * 函數(shù)名稱:void PortInit(void)

          * 函數(shù)功能: 端口初始化

          * 入口參數(shù): 無

          * 出口參數(shù): 無

          * 備 注:無

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

          void PortInit(void)

          {

          1->FIODIR = 0xB0000000; /* LEDs on PORT1 defined as Output */

          2->FIODIR = 0x0000007C; /* LEDs on PORT2 defined as Output */

          Led1Off(); /* 初始化時熄滅所有的燈*/

          Led2Off();

          Led3Off();

          Led4Off();

          Led5Off();

          Led6Off();

          Led7Off();

          Led8Off();

          }

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

          * 函數(shù)名稱:int main(void)

          * 函數(shù)功能: 主函數(shù)

          * 入口參數(shù): 無

          * 出口參數(shù): 無

          * 備 注:無

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

          int main(void)

          {

          SystemInit(); /* 系統(tǒng)初始化,函數(shù)在system_LPC17xx.c文件夾中定義*/

          SysTick_Config(SystemFrequency/1000 - 1); /* 配置時鐘中斷,每1ms中斷一次*/

          /* 在core_cm3.h中定義*/

          PortInit(); /* 端口初始化*/

          while(1)

          {

          Led1On(); //LED1開

          Led4On(); //LED4 開

          DelayMs(200);

          Led1Off(); //LED1關(guān)

          Led4Off(); //LED4關(guān)

          DelayMs(200);

          }

          }

          因為程序是最基礎(chǔ)的,所以不是太難,程序中延時函數(shù)用的是系統(tǒng)節(jié)拍定時器,每1m中斷一次,系統(tǒng)節(jié)拍定時器的中斷配置函數(shù)是SysTick_Config(uint32_t ticks)它在core_cm3.h中有定義,有興趣的話可以看看。是一個結(jié)構(gòu)體指針,原型在LPC17XX.H這個頭文件中,其定義的原型如下所示:

          typedef struct

          {

          __IO uint32_t FIODIR;

          uint32_t RESERVED0[3];

          __IO uint32_t FIOMASK;

          __IO uint32_t FIOPIN;

          __IO uint32_t FIOSET;

          __O uint32_t FIOCLR;

          } GPIO_TypeDef;

          還有幾個宏定義,如下所示:

          1)、#define GPIO1 (( GPIO_TypeDef *) GPIO1_BASE)

          上面這個宏是把GPIO1指向芯片GPIO1的基址上,

          2)、#define GPIO1_BASE (GPIO_BASE + 0x00020)

          3)、#define GPIO_BASE (0x2009C000UL)

          這三個宏就把GPIO的基址定義了出來,關(guān)于LPV1768內(nèi)部地址的分配情況,可以參看它的數(shù)據(jù)手冊,也可參考一下《ARM 權(quán)威指南》,這本書在網(wǎng)上有電子書,好像宋巖寧牛人早已把它翻譯成中文了,懶貓現(xiàn)在也正在參考這本書,另外一定要多去NXP網(wǎng)站看一下它的handbook,whitepaper等資料,還可多到論壇轉(zhuǎn)轉(zhuǎn),有些壇子里深藏了好多老鳥,好多大蝦,好多大牛,有你學的,有你問的,只要肯用心,一根網(wǎng)線,能解決很多問題。


        上一頁 1 2 下一頁

        關(guān)鍵詞: 實驗 GPIO Cortex-M3 自學

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 东安县| 大连市| 苏尼特左旗| 育儿| 壤塘县| 保山市| 和田县| 镇雄县| 达日县| 金昌市| 绿春县| 巧家县| 蓝山县| 鄢陵县| 东阿县| 紫云| 绿春县| 通辽市| 遵义县| 津南区| 阳江市| 玛沁县| 三门县| 桐梓县| 邮箱| 克什克腾旗| 五华县| 三原县| 辛集市| 兴城市| 兴业县| 红原县| 康乐县| 石嘴山市| 股票| 漾濞| 洛川县| 耒阳市| 新泰市| 固阳县| 武川县|