初中生
最后登录1970-1-1
在线时间 小时
注册时间2018-4-19
|
问题:LED灯的默认状态怎么可以设置呢?
为了寻找LED灯的默认状态
做以下两个实验。
实验一:采用demo里面的源码。
- int main(void)
- {
- /* LED 端口初始化 */
- LED_GPIO_Config();
- return 0;
- }
复制代码- void LED_GPIO_Config(void)
- {
- /*定义一个GPIO_InitTypeDef类型的结构体*/
- GPIO_InitTypeDef GPIO_InitStructure;
- /*开启LED相关的GPIO外设时钟*/
- RCC_APB2PeriphClockCmd( LED1_GPIO_CLK | LED2_GPIO_CLK | LED3_GPIO_CLK, ENABLE);
- /*选择要控制的GPIO引脚*/
- GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN;
- /*设置引脚模式为通用推挽输出*/
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- /*设置引脚速率为50MHz */
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- /*调用库函数,初始化GPIO*/
- GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);
-
- /*选择要控制的GPIO引脚*/
- GPIO_InitStructure.GPIO_Pin = LED2_GPIO_PIN;
- /*调用库函数,初始化GPIO*/
- GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure);
-
- /*选择要控制的GPIO引脚*/
- GPIO_InitStructure.GPIO_Pin = LED3_GPIO_PIN;
- /*调用库函数,初始化GPIOF*/
- GPIO_Init(LED3_GPIO_PORT, &GPIO_InitStructure);
- /* 关闭所有led灯 */
- GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);
-
- /* 关闭所有led灯 */
- GPIO_SetBits(LED2_GPIO_PORT, LED2_GPIO_PIN);
-
- /* 关闭所有led灯 */
- GPIO_SetBits(LED3_GPIO_PORT, LED3_GPIO_PIN);
- }
复制代码 实验结果:
程序烧录进去后,每按一次Reset按键,LED灯都会闪烁一次(时间很短)。
因此可以判断,LED在初始化完成后,默认状态是开的,然后被程序给关闭了。
实验二:使用教程中的寄存器直接操作代码
- int main()
- {
- *(unsigned int*)0x40021018 |= (1<<3);
- *(unsigned int*)0x40010C00 |= (1<<(4*0));
- *(unsigned int*)0x40010C0C |= (1<<0);
- return 0;
- }
复制代码 实验结果:
程序烧录进去后,每按一次Reset按键,LED灯都会闪烁一次(时间很短)。
因此可以判断,LED在初始化完成后,默认状态是开的,然后被程序给关闭了。
问题:LED灯的默认状态怎么可以设置呢?
|
|