小学生
最后登录1970-1-1
在线时间 小时
注册时间2021-2-7
|
老师快来!老师快来!老师快来!老师快来!老师快来!老师快来!老师快来!老师快来!老师快来!老师快来!老师快来!老师快来!老师快来!老师快来!
按键控制LED灯开关,我把KEY和LED的初始化配置文件分开写没事,但是合在一起就不可以,MINI板子上的两个LED灯一直亮着,老师帮忙看看哪里出了问题,
- #include "stm32f10x.h"
- #include "./bsp_key/bsp_key.h"
- void delay(uint32_t count)
- {
- for(;count!=0;count--);
- }
- int main()
- {
- LED_GPIO_Config();
- KEY_GPIO_Config();
- if(Key_Scan(KEY1_GPIO_PORT,KEY1_GPIO_Pin)==KEY_ON)
- {
- /* LED1 TOGGLE*/
- LED1_TOGGLE;
- }
- if(Key_Scan(KEY2_GPIO_PORT,KEY2_GPIO_Pin)==KEY_ON)
- {
- /* LED2 TOGGLE*/
- LED2_TOGGLE;
- }
- }
复制代码- #include "./bsp_key/bsp_key.h"
- void KEY_GPIO_Config(void)
- { GPIO_InitTypeDef GPIO_InitStruct;
- //开始按键时钟使能
- RCC_APB2PeriphClockCmd(KEY1_GPIO_CLK|KEY2_GPIO_CLK,ENABLE);
- //配置外设相关的初始化结构体
-
- GPIO_InitStruct.GPIO_Pin=KEY1_GPIO_Pin;
- GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
- //输入不用配置速度
- GPIO_Init(KEY1_GPIO_PORT,&GPIO_InitStruct);
-
- GPIO_InitStruct.GPIO_Pin=KEY2_GPIO_Pin;
- GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
- GPIO_Init(KEY2_GPIO_PORT,&GPIO_InitStruct);
- }
- //按键扫描函数
- uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
- {
- if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==KEY_ON)
- {
- while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==KEY_ON);
- return KEY_ON;
-
- }
- else
- return KEY_OFF;
- }
- void LED_GPIO_Config(void)
- {
- GPIO_InitTypeDef GPIO_InitStruct;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOC,ENABLE);
- GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2;
- GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
- GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;
- GPIO_Init(GPIOC,&GPIO_InitStruct);
-
- GPIO_InitStruct.GPIO_Pin=GPIO_Pin_3;
- GPIO_Init(GPIOC,&GPIO_InitStruct);
- }
复制代码- #ifndef __bsp_key_H
- #define __bsp_key_H
- #include "stm32f10x.h"
- #define KEY1_GPIO_CLK RCC_APB2Periph_GPIOA
- #define KEY1_GPIO_PORT GPIOA
- #define KEY1_GPIO_Pin GPIO_Pin_0
- #define KEY2_GPIO_CLK RCC_APB2Periph_GPIOC
- #define KEY2_GPIO_PORT GPIOC
- #define KEY2_GPIO_Pin GPIO_Pin_13
- #define KEY_ON 1
- #define KEY_OFF 0
- //C语言知识点,^:两个数相同,为0,不同为1(异或)
- #define digitalTOGGLE(p,i) {p->ODR ^=i;}
- #define LED1_TOGGLE digitalTOGGLE(GPIOC,GPIO_Pin_2)
- #define LED2_TOGGLE digitalTOGGLE(GPIOC,GPIO_Pin_3)
- void LED_GPIO_Config(void);
- void KEY_GPIO_Config(void);
- uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);
- #endif /*__bsp_key_h */
复制代码
我查了好久找不到错误。
|
|