1、LED闪烁程序
c
/*
LED灯闪烁,LED正极连接电源,负极连接PA0引脚,所以输出0点亮,输出1熄灭
*/
#include "stm32f10x.h"
#include "Delay.h"
int main(void)
{
//1. 使能挂载在APB2总线上面的片上外设时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//2. 对GPIO_PA0进行配置
GPIO_InitTypeDef GPIOInitStruct;
GPIOInitStruct.GPIO_Pin = GPIO_Pin_0;
GPIOInitStruct.GPIO_Mode = GPIO_Mode_Out_OD;//输出开漏模式,0才有驱动能力
GPIOInitStruct.GPIO_Speed = GPIO_Speed_2MHz;//最大输出速度
GPIO_Init(GPIOA,&GPIOInitStruct);
while(1)
{
//3. 方式一:使用GPIO_WriteBit()函数
// GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);//点亮LED
// Delay_ms(1000);//延迟1s
// GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);//熄灭LED
// Delay_ms(1000);
//4. 方式二:使用GPIO_SetBits/GPIO_ResetBits
// GPIO_ResetBits(GPIOA,GPIO_Pin_0);
// Delay_ms(1000);
// GPIO_SetBits(GPIOA,GPIO_Pin_0);
// Delay_ms(1000);
//5. 方式三:使用GPIO_Write()函数
GPIO_Write(GPIOA, 0x0000);//一共16位,对应PA0~PA15。
Delay_ms(1000);
GPIO_Write(GPIOA, 0x0001);
Delay_ms(1000);
}
}
2、LED流水灯
c
/*
LED灯流水灯,LED负极连接电源,正极连接PA0引脚
*/
#include "stm32f10x.h"
#include "Delay.h"
int main(void)
{
uint8_t i;
//1. 使能挂载在APB2总线上面的片上外设时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//2. 对GPIO_PA0进行配置
GPIO_InitTypeDef GPIOInitStruct;
GPIOInitStruct.GPIO_Pin = GPIO_Pin_All;//选择所有引脚,选择引脚可以按位或
GPIOInitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//输出推挽模式,0,1都有驱动能力,方便位运算
GPIOInitStruct.GPIO_Speed = GPIO_Speed_2MHz;//最大输出速度,
GPIO_Init(GPIOA,&GPIOInitStruct);
while(1)
{
//5. 方式三:使用GPIO_Write()函数
uint16_t a = 0x01;//0000 0001
for(i = 0;i < 8;i++)
{
GPIO_Write(GPIOA, a);//0000 0001。一共16位,对应PA0~PA15。
Delay_ms(500);
a = a << 1;//左移
}
}
}
3、蜂鸣器的使用
c
/*
蜂鸣器的使用,输出低电平,蜂鸣器响
*/
#include "stm32f10x.h"
#include "Delay.h"
int main(void)
{
//1. 使能挂载在APB2总线上面的片上外设时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//2. 对GPIO_PA0进行配置
GPIO_InitTypeDef GPIOInitStruct;
GPIOInitStruct.GPIO_Pin = GPIO_Pin_0;
GPIOInitStruct.GPIO_Mode = GPIO_Mode_Out_OD;//输出开漏模式,0才有驱动能力
GPIOInitStruct.GPIO_Speed = GPIO_Speed_2MHz;//最大输出速度
GPIO_Init(GPIOA,&GPIOInitStruct);
while(1)
{
//3. 方式一:使用GPIO_WriteBit()函数
// GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);//点亮LED
// Delay_ms(1000);//延迟1s
// GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);//熄灭LED
// Delay_ms(1000);
//4. 方式二:使用GPIO_SetBits/GPIO_ResetBits
// GPIO_ResetBits(GPIOA,GPIO_Pin_0);
// Delay_ms(1000);
// GPIO_SetBits(GPIOA,GPIO_Pin_0);
// Delay_ms(1000);
//5. 方式三:使用GPIO_Write()函数
GPIO_Write(GPIOA, 0x0000);//一共16位,对应PA0~PA15。
Delay_ms(100);
GPIO_Write(GPIOA, 0x0001);
Delay_ms(100);
GPIO_Write(GPIOA, 0x0000);//一共16位,对应PA0~PA15。
Delay_ms(100);
GPIO_Write(GPIOA, 0x0001);
Delay_ms(100);
GPIO_Write(GPIOA, 0x0000);//一共16位,对应PA0~PA15。
Delay_ms(100);
GPIO_Write(GPIOA, 0x0001);
Delay_ms(700);
}
}