STM32F103VE 微控制器控制 PB8 的亮灭,按一次亮,按两次灭
时间: 2023-05-20 10:06:47 浏览: 67
可以使用以下代码实现:
```
#include "stm32f10x.h"
int main(void)
{
// 初始化 GPIOB
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// 初始化计数器
uint8_t count = 0;
while (1)
{
// 检测 PB8 是否被按下
if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8) == Bit_RESET)
{
// 延时一段时间,防止抖动
for (int i = 0; i < 100000; i++);
// 再次检测 PB8 是否被按下
if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8) == Bit_RESET)
{
// 按下两次,灭灯
if (count == 1)
{
GPIO_SetBits(GPIOB, GPIO_Pin_8);
count = 0;
}
// 按下一次,亮灯
else
{
GPIO_ResetBits(GPIOB, GPIO_Pin_8);
count = 1;
}
}
}
}
}
```
阅读全文