新聞中心

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

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

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

本文引用地址:http://m.butianyuan.cn/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關

  Led4Off(); //LED4關

  DelayMs(200);

  }

  }

  因為程序是最基礎的,所以不是太難,程序中延時函數(shù)用的是系統(tǒng)節(jié)拍定時器,每1m中斷一次,系統(tǒng)節(jié)拍定時器的中斷配置函數(shù)是SysTick_Config(uint32_t ticks)它在core_cm3.h中有定義,有興趣的話可以看看。是一個結構體指針,原型在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的基址定義了出來,關于LPV1768內(nèi)部地址的分配情況,可以參看它的數(shù)據(jù)手冊,也可參考一下《ARM 權威指南》,這本書在網(wǎng)上有電子書,好像宋巖寧牛人早已把它翻譯成中文了,懶貓現(xiàn)在也正在參考這本書,另外一定要多去NXP網(wǎng)站看一下它的handbook,whitepaper等資料,還可多到論壇轉轉,有些壇子里深藏了好多老鳥,好多大蝦,好多大牛,有你學的,有你問的,只要肯用心,一根網(wǎng)線,能解決很多問題。


上一頁 1 2 下一頁

關鍵詞: 實驗 GPIO Cortex-M3 自學

評論


相關推薦

技術專區(qū)

關閉