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