LED闪烁
注意事项
完成以下操作GPIO_InitTypeDef GPIO_InitStructure;结构体就可以再中间定义,否则要在代码第一行定义
选中要搜索的函数,CTRL+F搜索
typedef enum
{ GPIO_Mode_AIN = 0x0, // (Analog in)模拟输入
GPIO_Mode_IN_FLOATING = 0x04, // 浮空输入
GPIO_Mode_IPD = 0x28,//(In Pull Down) 下拉输入
GPIO_Mode_IPU = 0x48,//(In Pull Up) 上拉输入
GPIO_Mode_Out_OD = 0x14,// (Out Open Drain) 开漏输出
GPIO_Mode_Out_PP = 0x10,// (Out Push Pull) 推挽输出
GPIO_Mode_AF_OD = 0x1C,// (Atl Open Drain) 复用开漏输出
GPIO_Mode_AF_PP = 0x18// (Atl Push Pull) 复用推挽输出
}GPIOMode_TypeDef;
程序代码
#include "stm32f10x.h" // Device header
#include "Delay.h"
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
//GPIO_ResetBits(GPIOA, GPIO_Pin_0); //点亮LED
//GPIO_SetBits(GPIOA, GPIO_Pin_0); // 熄灭LED
//GPIO_WriteBit(GPIOA, GPIO_Pin_0,Bit_RESET);//置低电平
//GPIO_WriteBit(GPIOA, GPIO_Pin_0,Bit_SET);//置高电平
while(1)
{
GPIO_WriteBit(GPIOA, GPIO_Pin_0,Bit_RESET);//点亮LED
Delay_ms(500);
GPIO_WriteBit(GPIOA, GPIO_Pin_0,Bit_SET);// 熄灭LED
Delay_ms(500);
GPIO_WriteBit(GPIOA, GPIO_Pin_0,(BitAction)0);//置低电平 (BitAction)0强制类型转换
Delay_ms(500);
GPIO_WriteBit(GPIOA, GPIO_Pin_0,(BitAction)1);//置高电平
Delay_ms(500);
}
}
在推挽输出模式下,高低电平都有驱动能力,在开漏输出模式下,高电平没有驱动能力
LED流水灯
#include "stm32f10x.h" // Device header
#include "Delay.h"
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
//GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_1| GPIO_Pin_2| GPIO_Pin_3| GPIO_Pin_4| GPIO_Pin_5| GPIO_Pin_6| GPIO_Pin_7;//按位或操作,同时操作多个引脚
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
//GPIO_ResetBits(GPIOA, GPIO_Pin_0); //点亮LED
//GPIO_SetBits(GPIOA, GPIO_Pin_0); // 熄灭LED
//GPIO_WriteBit(GPIOA, GPIO_Pin_0,Bit_RESET);//置低电平
//GPIO_WriteBit(GPIOA, GPIO_Pin_0,Bit_SET);//置高电平
while(1)
{
for(int i=0;i<8;i++)
{
GPIO_Write(GPIOA, ~(0x0001<<i));//点亮LED
Delay_ms(500);
}
GPIO_Write(GPIOA, ~0x0001);
}
}
蜂鸣器
接在P12端口
#include "stm32f10x.h" // Device header
#include "Delay.h"
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
while(1)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_12);
Delay_ms(500);
GPIO_SetBits(GPIOB, GPIO_Pin_12);
Delay_ms(500);
}
}