STM32F103RCT6控制LED

STM32F103RCT6控制LED转载于http://blog.csdn.net/snyanglq/article/details/50730895

不管什么单片机,想要控制LED灯,只能是通过控制单片机芯片的I/O引脚电平的高低来实现。
同样在ST单片机也一样,在ST单片机上,I/O引脚可以被软件设置成各种不同的功能,如输入或输出,所以被称为 GPIO (General-purpose I/O)。
而GPIO引脚又被分为GPIOA、GPIOB„„GPIOG不同的组,每组端口分为 0~15,共16个不同的引脚不等,
对于不同型号的芯片,端口的组和引脚的数量不尽相同,具体请参考相应ST单片机芯片型号的datasheet。 


根据ST单片机的GPIO特点,控制LED灯的步骤如下: 
1.在众多 GPIO端口引脚中选定需要控制的特定引脚[与LED相连的控制引脚] 
2.根据外设配置GPIO需要的特定功能 

3.通过设置 GPIO输出电压的高低控制LED的亮和灭

电路图



从电路图可以看出低电平LED亮,高电平LED灭


所以我们设置的程序如下:

下面为库函数编程,需要加载如下库文件


main.c

[cpp]  view plain  copy
  1. /********************************************************* 
  2. *平台:MDKARM 5.14 
  3. *主控:STM32F103RCT6 
  4. **********************************************************/  
  5. #include "stm32f10x.h"  
  6. #include "led.h"  
  7.   
  8. //延时函数  
  9. void Delay(unsigned int t)  
  10. {  
  11.     while(t != 0)  
  12.     {  
  13.         t--;  
  14.     }  
  15. }  
  16.   
  17. int main (void)  
  18. {  
  19.     LED_Init();  
  20.       
  21.     while (1)       //步骤3  
  22.     {  
  23.         LED_Not(0);             //LED亮灭交替闪烁  
  24.         for (j=0; j<30; j++)  
  25.         {  
  26.             Delay(60000);  
  27.         }  
  28.     }  
  29. }  
led.c

[cpp]  view plain  copy
  1. #include "led.h"  
  2. //LED 端口初始化//步骤2  
  3. void LED_Init(void)  
  4. {  
  5.     GPIO_InitTypeDef GPIO_InitStructure;//定义一个GPIO_InitTypeDef类型的结构体  
  6.     RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE); //开启GPIO的外设时钟  
  7.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;//选定控制引脚//步骤1     
  8.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置引脚为通用推挽输出    
  9.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置控制引脚的速度  
  10.     GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化结构体  
  11.     GPIO_SetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);//初始化LED灯熄灭  
  12. }  
  13. //点亮1个LED灯  
  14. void LED_On(int n)  
  15. {  
  16.     switch(n)  
  17.     {  
  18.      case 0:    GPIO_ResetBits(GPIOC,GPIO_Pin_0);       //控制引脚输出低电平  
  19.                         break;  
  20.      case 1:    GPIO_ResetBits(GPIOC,GPIO_Pin_1);  
  21.                         break;  
  22.      case 2:    GPIO_ResetBits(GPIOC,GPIO_Pin_2);  
  23.                         break;  
  24.      case 3:  GPIO_ResetBits(GPIOC,GPIO_Pin_3);  
  25.                         break;  
  26.      defaultbreak;  
  27.     }  
  28. }  
  29. //  
  30. void LED_Off(int n)  
  31. {  
  32.     switch(n)  
  33.     {  
  34.      case 0:    GPIO_SetBits(GPIOC,GPIO_Pin_0);         //控制引脚输出高电平  
  35.                         break;  
  36.      case 1:    GPIO_SetBits(GPIOC,GPIO_Pin_1);  
  37.                         break;  
  38.      case 2:    GPIO_SetBits(GPIOC,GPIO_Pin_2);  
  39.                         break;  
  40.      case 3:  GPIO_SetBits(GPIOC,GPIO_Pin_3);  
  41.                         break;  
  42.      defaultbreak;  
  43.     }     
  44. }  
  45.   
  46.   
  47. void LED_Not(int n)  
  48. {  
  49.     switch(n)  
  50.     {  
  51.      case 0:    GPIO_WriteBit(GPIOC, GPIO_Pin_0,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_0))));  
  52.                         break;  
  53.      case 1:    GPIO_WriteBit(GPIOC, GPIO_Pin_1,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_1))));  
  54.                         break;  
  55.      case 2:    GPIO_WriteBit(GPIOC, GPIO_Pin_2,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_2))));  
  56.                         break;  
  57.      case 3:  GPIO_WriteBit(GPIOC, GPIO_Pin_3,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_3))));  
  58.                         break;  
  59.      defaultbreak;  
  60.     }         
  61. }  

如此编译后下载到MCU就能看到LED一闪一闪的
### 回答1: STM32F103RCT6是一款基于ARM Cortex-M3核心的32位微控制器,它内置了多个通用输入输出引脚(GPIO),可以用于控制外部设备。在设计使用STM32F103RCT6控制LED灯的电路图时,需要以下几个关键元件: 1. STM32F103RCT6芯片:作为主控芯片,负责控制LED灯的开关状态。 2. LED灯:用于发光,常见的有常亮型LED和闪烁型LED两种。 3. 电阻:用来限制电流,保护LED灯不受损。 4. 连接线:将芯片和LED灯连接在一起。 具体的电路图可以按照以下步骤进行设计: 1. 将STM32F103RCT6芯片的GPIO引脚与LED灯连接。选择一个GPIO引脚作为控制引脚,使用连接线将其与LED的正极连接。 2. 为LED灯选择一个适当的电阻。在电路图中,将电阻连接在LED的负极与STM32F103RCT6的GND引脚之间。电阻的选择应根据所使用的LED的特性以及所需的电流进行计算。 3. 如果需要控制LED的亮灭状态,可以将电阻与一个额外的GPIO引脚连接,通过控制该引脚的电平来控制LED的亮灭。在电路图中,将该GPIO引脚与电阻连接,然后将电阻与LED的正极连接。 在设计完电路图后,还需要编写适当的软件程序控制STM32F103RCT6芯片相应GPIO引脚的输出电平,从而实现对LED灯的控制。具体的软件程序编写将涉及到使用STM32F1系列的开发环境和相应的编程语言,如C语言或汇编语言。 请注意,在实际设计中,除了上述基本的电路图外,还需要考虑如电源的连接、信号的滤波等其他因素,以保证LED灯的正常工作。 ### 回答2: STM32F103RCT6 是一款常用的STM32系列微控制器,由STMicroelectronics公司生产。它具有丰富的外设,因此可以广泛应用于各种领域,如工业控制、物联网和消费电子等。 对于STM32F103RCT6LED灯电路图,我们可以基于这款芯片设计一个简单的电路来驱动LED灯。下面是一种常见的电路设计: 首先,我们需要连接LED灯到STM32F103RCT6的GPIO引脚上。GPIO引脚具有输入和输出功能,我们可以通过配置来选择它们的工作模式。在这个例子中,我们将使用一个输出引脚来控制LED灯的亮灭。 我们选择一个合适的GPIO引脚(例如PA5)来连接到LED灯的正极上。假设我们将LED灯的负极连接到STM32F103RCT6地线上(GND)。 接下来,我们需要在代码中配置GPIO引脚的工作模式。我们可以使用ST的CubeMX软件来生成初始化代码,或者手动编写代码。 对于使用ST的CubeMX软件的方法,我们可以选择相应的GPIO引脚,并将其配置为输出引脚。然后,我们可以选择高电平或低电平输出,以控制LED灯的亮灭。 对于手动编写代码的方法,我们需要使用STM32的库函数来配置GPIO引脚的工作模式。具体来说,我们需要调用相应的函数来设置引脚为输出模式,并在需要时将引脚的输出状态设置为高电平或低电平。 完成这些步骤后,我们就可以通过控制STM32F103RCT6的GPIO引脚来控制LED灯的亮灭了。例如,如果我们将GPIO引脚设置为高电平状态,LED灯将会亮起;如果我们将GPIO引脚设置为低电平状态,LED灯将会熄灭。 需要注意的是,为了保护LED灯和STM32F103RCT6控制器,我们可以在电路中添加电流限制电阻和保护二极管,以防止过流和反向电压的产生。 总之,这是一个基本的STM32F103RCT6LED灯电路图设计。 ### 回答3: LED灯电路图是STM32F103RCT6控制器连接到LED灯的电路设计图。 STM32F103RCT6是一款32位ARM Cortex-M3内核的微控制器,拥有丰富的外设和强大的运算能力。LED灯是一种常见的电子组件,用于提供光源。 在电路图中,STM32F103RCT6控制器的引脚连接到LED灯。通常,LED灯连接到STM32F103RCT6的GPIO(通用输入/输出)引脚。GPIO引脚可以配置为输出模式,以便通过控制引脚的电平来控制LED的亮灭。 电路图中还可能包括一些电阻器,用于限制LED电流,以保护LED免受过电流的损坏。电路图中也可能包括电容器,用于稳定电源电压。 在软件方面,通过编程STM32F103RCT6的GPIO引脚,可以控制LED灯的亮灭。例如,将引脚输出逻辑高电平可以使LED灯亮起,将引脚输出逻辑低电平可以使LED灯熄灭。 此外,还可以通过PWM(脉冲宽度调制)来控制LED的亮度。通过调节PWM的占空比,可以改变LED的亮度级别。 总结来说,STM32F103RCT6LED灯电路图主要是将微控制器的GPIO引脚连接到LED灯,通过控制引脚的电平或PWM来控制LED的亮灭和亮度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值