完整教程:stm32f103c8t6 led闪灯实验

目录

闪灯原理

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仿真也试了一下没问题

posted @ 2025-09-22 15:34  wzzkaifa  阅读(12)  评论(0)    收藏  举报