用固件库函数方式写个Stm32f103c8t6 写个程序PA0外部上拉,PA0延时500MS闪烁
时间: 2023-08-14 19:07:46 浏览: 99
stm32f103c8t6 固件函数
好的,以下是代码实现,注释中有详细说明:
```c
#include "stm32f10x.h" //包含STM32F10x系列单片机的头文件
void Delay(__IO uint32_t nCount); //延时函数
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO结构体变量
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOA时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //PA0
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA
while (1)
{
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0) //判断PA0是否按下
{
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //PA0
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA
GPIO_SetBits(GPIOA, GPIO_Pin_0); //输出高电平
Delay(500000); //延时500ms
GPIO_ResetBits(GPIOA, GPIO_Pin_0); //输出低电平
Delay(500000); //延时500ms
}
}
}
void Delay(__IO uint32_t nCount)
{
for (; nCount != 0; nCount--);
}
```
注意:这里使用了外部上拉,按下PA0时输出高电平,松开PA0时输出低电平,所以需要按下PA0才能看到闪烁效果。如果需要使用内部上拉,只需要将`GPIO_Mode_IPU`改为`GPIO_Mode_IN_FLOATING`即可。
阅读全文