STM32F103C8----3-1 LED闪烁(跟着江科大学STM32)

一,电路图 + 接线图

面包板的的使用请参考:《面包板的使用_面包板的详细使用方法-CSDN博客

二,目的/效果

2.1 推婉输出 外部供电(熄的时间长)

2.2 推婉输出 内部供电(亮的时间长)

三,创建Keil项目

详细参考:《STM32F103C8----2-1 Keil5搭建STM32项目模版(跟着江科大学STM32

四,主要逻辑+代码

4.1 使用到的片上资源

本节主要用到RCC、GPIO两个资源,如下图

用到的针脚PA0

对应新板子上的针脚位置

4.2 开启时钟

cpp 复制代码
	/*开启时钟*/
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	//开启GPIOA的时钟
															//使用各个外设前必须开启时钟,否则对外设的操作无效
	

4.3 GPIO初始化

有关GPIO的详细介绍请参考《STM32F103C8----GPIO(跟着江科大学STM32)-CSDN博客

cpp 复制代码
/*GPIO初始化*/
	GPIO_InitTypeDef GPIO_InitStructure;					//定义结构体变量
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;		//GPIO模式,赋值为推挽输出模式
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;				//GPIO引脚,赋值为第0号引脚
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		//GPIO速度,赋值为50MHz
	
	GPIO_Init(GPIOA, &GPIO_InitStructure);					//将赋值后的构体变量传递给GPIO_Init函数
															//函数内部会自动根据结构体的参数配置相应寄存器
															//实现GPIOA的初始化
	

推婉输出模式下,输出1,P=MOS导通 ,N-MOS断开,I/O输出高电平

输出0,P=MOS断开 ,N-MOS导通,I/O输出低电平

4.4.1 GPIO_ResetBits设置低电平,GPIO_SetBits设置高电平

cpp 复制代码
		/*方法1:GPIO_ResetBits设置低电平,GPIO_SetBits设置高电平*/
		GPIO_ResetBits(GPIOA, GPIO_Pin_0);					//将PA0引脚设置为低电平
		Delay_ms(500);										//延时500ms
		GPIO_SetBits(GPIOA, GPIO_Pin_0);					//将PA0引脚设置为高电平
		Delay_ms(500);										//延时500ms
		

4.4.2 Bit_RESET/Bit_SET指定

cpp 复制代码
		/*方法2:GPIO_WriteBit设置低/高电平,由Bit_RESET/Bit_SET指定*/
		GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);		//将PA0引脚设置为低电平
		Delay_ms(500);										//延时500ms
		GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);			//将PA0引脚设置为高电平
		Delay_ms(500);										//延时500ms
		

4.4.3 强转为BitAction类型

cpp 复制代码
	
		/*方法3:GPIO_WriteBit设置低/高电平,由数据0/1指定,数据需要强转为BitAction类型*/
		GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)0);		//将PA0引脚设置为低电平
		Delay_ms(500);										//延时500ms
		GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)1);		//将PA0引脚设置为高电平
		Delay_ms(500);										//延时500ms
	

4.4 实现闪烁(外部供电)

将LED的长针脚接VCC3.3,短针脚接PA0

电路图如下

接线图如下以上是外部供电

4.5 实现闪烁(内部供电)

将LED的长针脚接PA0,短针脚接GND

电路图如下

代码一样,只是灯亮灭的时间长度有变化了

cpp 复制代码
/*定义亮灭时间长短,注意:接线方式不同,亮灭时间交换*/
	int On_Time=500,Off_Time=1000;

在延时函数中,我们使用变量参数。便于区分亮灭时长(建议将On_TIme和Off_Time的值间隔大点,便于看到效果

cpp 复制代码
		GPIO_ResetBits(GPIOA, GPIO_Pin_0);					//将PA0引脚设置为低电平
		Delay_ms(On_Time);									//延时500ms
		GPIO_SetBits(GPIOA, GPIO_Pin_0);					//将PA0引脚设置为高电平
		Delay_ms(Off_Time);									//延时1000ms

五,代码编译、下载到STM32

STM32F103C8----2-1 Keil5搭建STM32项目模版(跟着江科大学STM32》中 代码下载到设备部分

六,项目源码

源码位置:《STM32F103C8T6: 学习STM32F103C8T6》这个是本人学习过程中代码在Gitee上的备份。

注意:本人学习中与江科大视频中的项目文件命名不太一样。主要是方便自己理解。代码部分部分也有细微差别,若代码有问题还请指正。学习就是模仿巨人,让自己成为巨人。能给各位带来站在肩上感觉是我的荣耀。大家一起进步。

江科大哔哩哔哩视频:STM32入门教程-2023版 细致讲解 中文字幕_哔哩哔哩_bilibili

相关推荐
XiangrongZ24 分钟前
江协科技STM32课程笔记(四)—定时器TIM(输入捕获)
笔记·科技·stm32
xyx-3v1 小时前
SPI四种工作模式
stm32·单片机·嵌入式硬件·学习
qiuiuiu4131 小时前
正点原子RK3568学习日志6-驱动模块传参
linux·c语言·开发语言·单片机·学习
BreezeJuvenile2 小时前
实验二 呼吸灯功能实验
stm32·单片机·嵌入式系统·流水灯·实验
北京阿尔泰科技厂家5 小时前
CPCIe-76F1G控制器:国产化高性能嵌入式解决方案
嵌入式硬件·控制器·工业自动化·数据采集卡·国产化控制器
Truffle7电子5 小时前
STM32【H7】理论——通信
stm32·单片机·嵌入式硬件
zhonghaoxincekj5 小时前
晶体管的定义,晶体管测量参数和参数测量仪器
功能测试·单片机·学习·测试工具·单元测试·制造
MAR-Sky6 小时前
keil5使用STlink下载程序到stm32后不自动运行的解决办法
stm32·单片机·嵌入式硬件
Blossom.1186 小时前
把AI“浓缩”到1KB:超紧凑型决策树在MCU上的极限优化实战
人工智能·python·单片机·深度学习·决策树·机器学习·数据挖掘
深圳市青牛科技实业有限公司7 小时前
在电力系统、电子设备制造等领域,变压器测试感量,电桥内阻如何选择
嵌入式硬件·音视频·制造·立体声收录机·盒式录音机·电子烟