stm32f103c8t6 led闪灯实验

发布于:2025-09-01 ⋅ 阅读:(22) ⋅ 点赞:(0)

目录

闪灯原理

2种接线方式控制闪灯

使用推挽接法

使用开漏接法

看原理图

写代码


闪灯原理

LED灯有个2-10mA的电流就可以点亮

3.3/510=0.006A=6mA

2种接线方式控制闪灯

使用推挽接法

当设置推挽模式时,CPU控制寄存器写0,IO引脚输出低电压,电路导通,灯亮。

                                CPU控制寄存器写1,IO引脚输出高电压,电路导通,灯不亮。

使用开漏接法

下面和最开始基本相同,但是开关接在右边

闭合灯亮,断开灯不亮

开漏模式下,P-MOS一直漏断开的,所以只用考虑下面的N-MOS,当给这个寄存器写0的时候,N-MOS闭合,电路导通灯就亮,当写1的时候,N-MOS断开,都悬空灯不亮。

看原理图

STM32F103C8T6有两个小灯,下面一个灯是电源指示灯,如果想点亮上面那个灯PC13,就需要看这个系统板的接法,看他是推挽接法还是开漏接法。如果你自己外接一个灯,当然可以自己随意设置。

STM32F103C8T6有的PC13在下面,电源指示灯在上门。

会发现是一个开漏接法,所以写0就可以亮,写1不亮

写代码

通过CPU往寄存器中写程序,所以是通用,又这个灯是开漏,所以选用的就是通用输出开漏模式

#include "stm32f10x.h"                  // Device header
#include "delay.h"
int main(void)
{
	//开启GPIOC的时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
	
	//初始化IO引脚 PC13通用输出开漏模式 2MHZ  PC13初始化后默认为0会亮
	GPIO_InitTypeDef GPIO_InitStruct={0};
	
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_13;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_OD;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_2MHz;

	GPIO_Init(GPIOC,&GPIO_InitStruct);

	while(1)
	{
		GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);  //写1 不亮
		Delay(200);
		GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET); //写0 亮
		Delay(200);
	}
}

我用proteus仿真也试了一下没问题


网站公告

今日签到

点亮在社区的每一天
去签到