keil5 stm32c103按键点灯
时间: 2023-08-25 17:05:37 浏览: 195
以下是使用Keil5和STM32C103的按键点灯示例代码:
首先,在Keil5中创建一个新的STM32C103工程,并将下面的代码复制到main.c文件中:
```
#include "stm32f10x.h"
void Delay(uint32_t nCount);
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable GPIOA clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
/* Configure PA0 as input */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Enable GPIOC clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
/* Configure PC13 as output */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
while(1)
{
/* Check if button is pressed */
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == Bit_RESET)
{
/* Turn on LED */
GPIO_SetBits(GPIOC, GPIO_Pin_13);
}
else
{
/* Turn off LED */
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
}
/* Delay */
Delay(100000);
}
}
void Delay(uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
```
该代码初始化了PA0为输入,PC13为输出,并在while循环中检查PA0的状态。如果PA0为低电平(即按钮被按下),则点亮PC13上的LED,否则熄灭LED。
需要注意的是,该代码使用了一个简单的延迟函数Delay(),其实现如下:
```
void Delay(uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
```
该函数使用循环来等待一定的时间。在实际应用中,应该使用更加精确的延迟函数,例如SysTick定时器或定时器中断等。
编译并下载程序到STM32C103,连接按键和LED,即可测试按键点灯功能。
阅读全文