STM32F103的入门_点亮LED灯

本文基于原子例程及其模板

在学习stm32之前,有大多数人学过51单片机,51单片机中的IO口可以直接进行使用,可以读取高低电平,也可以控制高低电平。

 

大家看这个51的程序,只要将LED灯的负极接入电源负极,在灯正极串联200欧(经过发光二极管会有一个电压降低值,简称压降,一般为2V,51单片机输入高电平为5V,直接接入LED灯,会将灯烧掉,欧姆定律大家都知道,直接用电阻将这3V电压分走后,LED灯就能正常发光,R=U/I  I等于什么呢,LED一般电流为15ma,所以R= 3/15ma = 200欧)再接入51单片机的P0^0口,当51单片机给出高电平,也就是5V时,LED灯就会亮了

#include <reg51.h>
 
 
 sbit LED = P0^0;
 main()
{
while(1)
 {
LED = 1;
 }
}

但是在STM32中,使用的电压为3.3V,且每一个IO口所拥有的功能很多,这时我们需要正常输出高低电平,怎么办呢?

咱们对STM32的IO口进行一个初始化

void LED_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;  //这叫结构体,需要放最上面
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	  //打开GPIO A的端口时钟 
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;				
 // 对GPIO口进行配置,这是你需要哪个就写哪个

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
//设置GPIO的模式,这个GPIO_MODE_OUT_PP,OUT代表输出,PP代表推挽式

 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //  这是GPIO口 速度 这时设置为50MHZ
 GPIO_Init(GPIOA, &GPIO_InitStructure);					 //  根据设定参数初始化GPIOA.8
 GPIO_SetBits(GPIOA,GPIO_Pin_8);						 //设置GPIOA.8输出高电平
}
 

这上面是对IO状态初始化的设置

咱现在就可以在主函数使用这个初始化

#include "sys.h"

void LED_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	 
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;				 
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		
 GPIO_Init(GPIOA, &GPIO_InitStructure);					 
 GPIO_SetBits(GPIOA,GPIO_Pin_8);						 

}
 

main()
{
  LED_Init();
   while(1)
    {
         GPIO_ResetBits(GPIOA,GPIO_Pin_8);//这个就是将IO口设置为低电平就是0V
         delay_ms(300);  
     //  维持上面的状态300ms,因为咱们LED灯负极接电源负极,此时单片机输出0V,LED两端没有电压差值,所以LED灯不会亮

             GPIO_SetBits(GPIOA,GPIO_Pin_8);	//这个就是将IO口设置为高电平就是3.3V
                此时LED两端有电压差值,就会发亮
             delay_ms(300);  
    }


}


有人会问,while(1)这个函数是什么意思,计算机中的值只有真和假,0就是假,其他的都是真值,while函数,当函数后面的()里为真值时,运行下面大括号中的语句,此时()里一直为真值,所以一直循环运行大括号中的语句。

因为51单片机是5V供电,所以输出高电平也是5V,但是STM32单片机是3.3V供电,输出高电平也是3.3V,此时这时候LED灯正极该一个多大的电阻呢,这就给大家留个任务,算出这个组织,可以在下面评论出来,我看看是不是算对了

  • 12
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要实现STM32F103HAL库点LED,你可以按照以下步骤进行操作: 1. 首先,确保你的工程环境已经搭建好,并且STM32F103芯片已经正确连接到开发板上。 2. 在代码包中,找到点LED的代码程序。该程序会使用HAL库函数来控制GPIO引脚输出来点LED。 3. 打开IDE,选择你使用的IDE,例如STM32CubeIDE或Keil MDK-ARM。 4. 在IDE中创建一个新项目,并设置项目名称为"led" 。 5. 生成代码。点击IDE中的"Generate Code"按钮,根据你选择的IDE生成代码。 6. 配置下载器。在CubeIDE中,点击"Run"按钮,然后在弹出的配置选项中选择下载器的类型,如果你使用的是ST-LINK调试探头,选择"ST-LINK(ST-LINK GDB Server)",如果你使用的是J-Link调试探头,选择第二项"J-LINK"。其他选项保持默认即可。 7. 下载代码。将生成的代码下载到STM32F103芯片上。 8. 运行代码。当代码成功下载到芯片上后,LED应该会点。 这样,你就可以使用STM32F103HAL库来点LED了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [STM32F103C8T6(HAL库)部分例程(点、串口通信)](https://download.csdn.net/download/weixin_43716074/12874935)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [一、【STM32 HAL库开发】点led](https://blog.csdn.net/qq_27849725/article/details/121937526)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值