[stm32-1]LED闪烁&LED流水灯&蜂鸣器

1、LED闪烁&LED流水灯&蜂鸣器

1.使用RCC开启GPIO时钟

2.使用GPIO_Init函数初始化GPIO

3.使用输入或输出函数控制GPIO口

RCC常用的3个库函数:

void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);

void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
void GPIO_DeInit(GPIO_TypeDef* GPIOx); //所指定的GPIO外设会被复位

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); //用结构体的参数来初始化GPIO口

void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct); //结构体变量赋一个默认值

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);

uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx); //GPIO读取函数

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);

void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal); //GPIO写入函数
GPIO_Mode_AIN //模拟输入

GPIO_Mode_IN_FLOATING = 0x04, //浮空输入

GPIO_Mode_IPD = 0x28, //下拉输入

GPIO_Mode_IPU = 0x48, //上拉输入

GPIO_Mode_Out_OD = 0x14, //开漏输出

GPIO_Mode_Out_PP = 0x10, //推挽输出

GPIO_Mode_AF_OD = 0x1C, //复用开漏

GPIO_Mode_AF_PP = 0x18 //复用推挽
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); //指定端口设置为高电平

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); //低电平

void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);

void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);

复制代码
#include "Device/Include/stm32f10x.h"   // Device header
#include "Delay.h"
int main()
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	GPIO_InitTypeDef GPIO_InitStructer;
	GPIO_InitStructer.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructer.GPIO_Pin=GPIO_Pin_0;
	GPIO_InitStructer.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructer);
	//GPIO_ResetBits(GPIOA,GPIO_Pin_0);
	//GPIO_SetBits(GPIOA,GPIO_Pin_0);
	GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);
	while(1)
	{
		GPIO_ResetBits(GPIOA,GPIO_Pin_0);
		Delay_ms(500);
		GPIO_SetBits(GPIOA,GPIO_Pin_0);
		Delay_ms(500);
//		GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);
//		Delay_ms(500);
//		GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);
//		Delay_ms(500);
	}
}

把LED长脚接A0,短脚接-,LED闪烁:推挽输出,高低电平均可驱动。

复制代码
#include "Device/Include/stm32f10x.h"   // Device header
#include "Delay.h"
int main()
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	GPIO_InitTypeDef GPIO_InitStructer;
	GPIO_InitStructer.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructer.GPIO_Pin=GPIO_Pin_All;//GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;
	GPIO_InitStructer.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructer);
//	//GPIO_ResetBits(GPIOA,GPIO_Pin_0);
//	//GPIO_SetBits(GPIOA,GPIO_Pin_0);
//	GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);
	while(1)
	{
		GPIO_Write(GPIOA,~0x0001);//0000000000000001
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0002);//0000000000000010
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0004);//0000000000000100
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0008);//0000000000001000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0010);//0000000000010000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0020);//0000000000100000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0040);//0000000001000000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0080);//0000000010000000
		Delay_ms(500);
	}
}
复制代码
#include "Device/Include/stm32f10x.h"   // Device header
#include "Delay.h"
int main()
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	GPIO_InitTypeDef GPIO_InitStructer;
	GPIO_InitStructer.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructer.GPIO_Pin=GPIO_Pin_12;
	GPIO_InitStructer.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOB,&GPIO_InitStructer);
	
	while(1)
	{
		GPIO_ResetBits(GPIOB,GPIO_Pin_12);
		Delay_ms(100);
		GPIO_SetBits(GPIOB,GPIO_Pin_12);
		Delay_ms(100);
		GPIO_ResetBits(GPIOB,GPIO_Pin_12);
		Delay_ms(100);
		GPIO_SetBits(GPIOB,GPIO_Pin_12);
		Delay_ms(700);
	}
}
相关推荐
阿川!1 小时前
嵌入式软件--stm32 DAY7 I2C通讯上
stm32·单片机·嵌入式硬件·mcu
O。o.尊都假都1 小时前
socket套接字的超时控制
单片机·嵌入式硬件·网络协议
欢乐熊嵌入式编程3 小时前
智能手表项目的《项目背景与目标说明书》样本文档
嵌入式硬件·目标跟踪·规格说明书·智能手表
海尔辛4 小时前
学习黑客BitLocker与TPM详解
stm32·单片机·学习
海染棠花4 小时前
vscode+platformIO开发STM32(八)
ide·vscode·stm32
上海合宙LuatOS5 小时前
全栈工程师实战手册:LuatOS日志系统开发指南!
java·开发语言·单片机·嵌入式硬件·物联网·php·硬件工程
公子无缘5 小时前
【嵌入式】记一次解决VScode+PlatformIO安装卡死的经历
vscode·stm32·单片机·mcu·platformio
昊昊昊昊昊明5 小时前
十天学会嵌入式技术之51单片机—day-9
单片机·嵌入式硬件·51单片机
欢乐熊嵌入式编程5 小时前
智能手表蓝牙 GATT 通讯协议文档
嵌入式硬件·目标跟踪·规格说明书·智能手表
whaosoft-1436 小时前
51c嵌入式~电路~合集27
嵌入式硬件