LED的GPIO初始化配置方式與上一講一致,以下是按鍵的GPIO初始化程序
- /*
- * Name : initialize
- * Description : ---
- * Author : ysloveivy.
- *
- * History
- * --------------------
- * Rev : 0.00
- * Date : 11/21/2015
- *
- * create.
- * --------------------
- */
- static int initialize(void)
- {
- GPIO_InitTypeDef GPIO_uInitStructure;
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOH,ENABLE);
- //設置連接按鍵的IO端口
- GPIO_uInitStructure.GPIO_Pin = GPIO_Pin_15;
- //設置端口為輸入模式
- GPIO_uInitStructure.GPIO_Mode = GPIO_Mode_IN;
- //設置速度為第三級
- GPIO_uInitStructure.GPIO_Speed = GPIO_Speed_100MHz;
- //設置輸入端口不變化
- GPIO_uInitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
- //把設置的參數用到結構體
- GPIO_Init(GPIOH, &GPIO_uInitStructure);
- return 0;
- }
復制代碼3、小知識
void RCC_AHB1PeriphClockCmd
(uint32_t RCC_AHB1Periph,FunctionalState NewState)
此函數為外設使能函數,第一個參數為需要被使能的外設,第二個參數為使能與否。可能很多讀者看到這函數不知道如何入手,不知道參數填啥子好,別急,咱先查看一下他的定義:
- void RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState)
- {
- /* Check the parameters */
- assert_param(IS_RCC_AHB1_CLOCK_PERIPH(RCC_AHB1Periph));
- assert_param(IS_FUNCTIONAL_STATE(NewState));
- if (NewState != DISABLE)
- {
- RCC->AHB1ENR |= RCC_AHB1Periph;
- }
- else
- {
- RCC->AHB1ENR &= ~RCC_AHB1Periph;
- }
- }
復制代碼 注意被我標紅的字符串,按照剛剛查定義的方法,它會告訴我們函數的參數可以填啥。如查看IS_FUNCTIONAL_STATE:
- #define IS_FUNCTIONAL_STATE(STATE)
- (((STATE) == DISABLE) || ((STATE) == ENABLE))
復制代碼我們可以看出第二個參數可填寫DISABLE(使能)和ENABLE(不使能)。
小結:上面用外設的使能函數為大家介紹了查看函數的方法,此方法在實際應用經常可以用到,當我們在閱讀、修改程序的時候,遇到哪些不太清楚的函數,就可以用這種方法查看。
五、實驗現象
按鍵每按下一次,ARM·LED顏色變換(紅色、綠色、藍色輪流交換)一次。
六、代碼包下載
復制網址到瀏覽器可下載pan.baidu.com/s/1sjrHnM9