嵌入式STM32—第一天GPIO实现led呼吸灯

1.软件及工程环境搭建

  • 就不介绍了,可以直接用现成的
    链接:https://pan.baidu.com/s/1GaSYpNm6yh-lZZmqRdXxvQ
    提取码:dy63
  • 相关库文件
    链接:https://pan.baidu.com/s/19PLYdtiuSoZZGdVD7_tumQ
    提取码:mrw8

2.GPIO实现led呼吸灯

  • 首先添加一下库函数
    在这里插入图片描述
  • 看一下开发板原理图
    在这里插入图片描述
    在这里插入图片描述
    得到对应的PC10,PC11,PC13
  • 什么都不要说直接上代码
  • 先LED初始化
void LEDInit(void)
{
    
    
		GPIO_InitTypeDef GPIO;//自定义GPIO	
		RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);//外部时钟C使能
		GPIO.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_11|GPIO_Pin_10;//选择引脚
		GPIO.GPIO_Mode = GPIO_Mode_OUT;//选择模式
		GPIO.GPIO_OType = GPIO_OType_PP;//选择类型寄存器 
		GPIO.GPIO_Speed = GPIO_Speed_50MHz;//选择速度
		GPIO.GPIO_PuPd = GPIO_PuPd_NOPULL;//选择上下拉
		GPIO_Init(GPIOC,&GPIO);//写入寄存器
		GPIO_SetBits(GPIOC,GPIO_Pin_13|GPIO_Pin_11|GPIO_Pin_10);//输出高电频关灯
		//GPIO_ResetBits(GPIOC,GPIO_Pin_13|GPIO_Pin_11|GPIO_Pin_10);	//输出低电频开灯																										//输出低电频关灯
}
  • 给一个自定义的延迟函数
void dalyg(int n)
{
    
    
   	int i;
   	for(i=0;i<n;i++);
}
  • 实现呼吸灯功能
void ledbreath(int t,int i)
{
    
    
   		GPIO_ResetBits(GPIOC,GPIO_Pin_13);
   		GPIO_SetBits(GPIOC,GPIO_Pin_13);
   		GPIO_ResetBits(GPIOC,GPIO_Pin_11);
   		GPIO_SetBits(GPIOC,GPIO_Pin_11);
   		GPIO_ResetBits(GPIOC,GPIO_Pin_10);
   		GPIO_SetBits(GPIOC,GPIO_Pin_10);
   		dalyg(i);
   		GPIO_SetBits(GPIOC,GPIO_Pin_13);
   		GPIO_ResetBits(GPIOC,GPIO_Pin_13);
   		GPIO_SetBits(GPIOC,GPIO_Pin_11);
   		GPIO_ResetBits(GPIOC,GPIO_Pin_11);
   		GPIO_SetBits(GPIOC,GPIO_Pin_10);
   		GPIO_ResetBits(GPIOC,GPIO_Pin_10);
   		dalyg(t-i);
}
  • 主函数调用相关的函数
LEDInit();
int DeyTim=8000,i;
while(1)
  	{
    
    
  			for(i=1;i<DeyTim;i+=1)//这两个参数随便调,只要效果明显就行了,先开始i增加占空比在增大
       	  {
    
    
      			  ledbreath(DeyTim,i);   
      	  }  
  		     dalyg(100);
  			
     		  for(i=DeyTim;i>1;i-=1)//后占空比开始减小
     	   {
    
    
      		       ledbreath(DeyTim,i);   
    	   }	
  			  dalyg(100);
  		}
  • 到此完美实现led呼吸灯,最后感谢大家阅读,如果需要其他相关资料请联系我。

猜你喜欢

转载自blog.csdn.net/weixin_45247466/article/details/114365000