介于本人也是初学者,本文基于江科大STM32写出,目的在于复习和更加深入掌握,本文仅供参考,如有未写明之处与错误请及时指出,感谢您的观看!
LED闪烁与蜂鸣器需要配置GPIO
GPIO:通用输入输出口,可配置的8种输入输出模式:
GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU 上拉输入
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出
开时钟:
GPB1与GPB2需要开APB2时钟
程序
#include "stm32f10x.h" //头文件
#include "Delay.h" //头文件,调用延时函数
int main(void)
{
//开时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //GPIOA与GPIOB需要开APB2时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitTypeDef GPIO_InitLED; //结构体定义
GPIO_InitTypeDef GPIO_InitBUZ;
GPIO_InitLED.GPIO_Mode = GPIO_Mode_Out_PP; //设置为推挽输出
GPIO_InitLED.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; //两个LED灯选择A0与A1脚
GPIO_InitLED.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitBUZ.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitBUZ.GPIO_Pin = GPIO_Pin_12;
GPIO_InitBUZ.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitLED); //初始化
GPIO_Init(GPIOB, &GPIO_InitBUZ);
while (1)
{
GPIO_ResetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_1); //点亮LED灯
Delay_ms(1000); //延迟1s
GPIO_ResetBits(GPIOB, GPIO_Pin_12); //开启蜂鸣器
Delay_ms(1000); //延迟1s
GPIO_SetBits(GPIOB, GPIO_Pin_12); //关闭蜂鸣器
Delay_ms(1000); //延迟1s
}
}