u8 ReadValue=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)
只在上面那条指令采集了一次按键数据。
等到执行到 while(!ReadValue)//等待按键被放开哪罩 这条指令时
数据仍然是上次采集到的那个值代表按键按下,(!ReadValue)这个值永远成立,所以无法代表按键断开。所以程序一直卡死在这条指令上。如果要通过就必须在判据里重新读取按键状态,像正确的程序那样用这样的指令
while(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10))//等待按键被放开
另外因为你只读取了一次按键状态,所以下面那么多一堆软返缓物件消除抖动的程序白写了。
综漏液上,正确的程序在每个判断的时刻都要重新读取下按键状态。
stm32的每一个引脚都有始终控制,这样在不用的时候可以关闭时钟来达到节能的目的,所以,如果要使用外设,必须先局虚掘打开时钟,否则没有办法进行 *** 作的。。。
具体函数是
RCC_APB2PeriphClockCmd(uint32_t
RCC_APB2Periph,FunctionalState
NewState)
RCC_APB2Periph是你要桐核打誉念开或者关闭的外设,NewState是enable或者disable为打开或者关闭…………
1.新建工程打开STM32cubeMX软件,点击New Project。选择对应开板MCU(STM32F103ZET6)。选择工程后进入工程界面,如下图所示。 2. 配置外设。 RCC设置,选择HSE(外部高速时钟)为Crystal/Ceramic Resonator(晶振/陶瓷谐振器) GPIO口功能选择,PF6,PF7,PF8,PF9为LED1-LED4.找到对应管脚设置为GPIO_Output模式。(黄色引脚为该功能的GPIO已被用作其他功能,可以忽略。绿色表示管脚已使用) 3. 时钟配置时钟配置采用图形配置,直观简单。各个外设时钟一目了然。STM32最高时钟为72M,败前判此处只有在HCLK处输入72,软件即可自动配置。(RCC选择外部高速时钟)。 4.功能外设配置在配置框我们可以看到有几个区域,分别对应的功能设置如下 Multimedia(多媒体):音频视频、LCD Control(控制):定时察改器 Analog(模拟):DAC、ADC Connectivity(通讯连接):串口、SPI 、I2C、USB、ETH SYStem(系统):DMA(直接存储器存取)、GPIO、NVIC、RCC、看门狗 middlewares(中间件): FreeRTOS、FATFS、LwIP、USB 此工程中DMA没用的不用配置,NVIC(嵌套中断向量控制器(Nested Vectored Interrupt Controller))配置中断优先级。RCC不用配置。 GPIO Pin Level (管脚状态):低电平 GPIO mode (管脚模式 ):推挽输出 Maximum output speed (最大输出速度):低速 User Label (用户标签):LED1 更改用户标签,管脚配置图会显示管脚的标签。 4. 功耗计算这悔皮个根据配置的外设计算功耗,不用理会。 5. 生成工程报告欢迎分享,转载请注明来源:内存溢出
评论列表(0条)