先 使能外設時鍾 再 初始化IO口


 

  • 使能IO口時鍾。調用函數RCC_APB2PeriphColckCmd();

 

  • 初始化IO口模式。調用函數GPIO_Init();

 

  • 操作IO口,輸出高低電平。

 

序不能反,解釋:

   ARM的芯片,外設通常都是給了時鍾后才能設置它的寄存器(即才能使用這個外設)。STM32、LPC1XXX等等都是這樣,這么做的目的是為了省電,使用了所謂時鍾門控的技術。寄存器是基於觸發器的,觸發器的賦值是一定需要時鍾的,而寄存器的時鍾是由總線時鍾提供的,就是說沒有總線時鍾的話,你給寄存器值它是不會讀入的。

e.g.

 1 void LED_init()
 2 {
 3     GPIO_InitTypeDef GPIO_InitStructure;//類似變量聲明,需要放在最前面
 4     
 5     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOB, ENABLE);//不能放在后面
 6     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
 7     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 8     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
 9         
10     GPIO_Init(GPIOB, &GPIO_InitStructure);
11     GPIO_Init(GPIOE, &GPIO_InitStructure);
12     
13     //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOB, ENABLE);//此處出錯
14     GPIO_SetBits(GPIOB, GPIO_Pin_5);
15     GPIO_SetBits(GPIOE, GPIO_Pin_5);
16 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM