焊接资讯

您现在的位置是:首页 > led灯 > 正文

led灯

关于stm32蓝牙控制led灯程序的信息

工品易达2022-11-12led灯13

请教一个stm32程序:我写了一个按键控制LED灯翻转,调试成功的程序如下:

有问题的那个程序

u8 ReadValue=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10);

只在上面那条指令采集了一次按键数据。

等到执行到 while(!ReadValue);//等待按键被放开 这条指令时

数据仍然是上次采集到的那个值代表按键按下,(!ReadValue)这个值永远成立,所以无法代表按键断开。所以程序一直卡死在这条指令上。如果要通过就必须在判据里重新读取按键状态,像正确的程序那样用这样的指令

while(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10));//等待按键被放开

另外因为你只读取了一次按键状态,所以下面那么多一堆软件消除抖动的程序白写了。

综上,正确的程序在每个判断的时刻都要重新读取下按键状态。

stm32点亮led灯用到的模块

,模块如下:

1

把工程项目模板重新复制一份,改名为“点亮一个LED灯”

在USR文件夹下创建led文件夹

led文件夹下面新建以下两个文件

bsp_led.c

bsp_led.h

2

然后我们用keil打开这个工程项目

点击如下图圈上的图标

3

新建一个led文件夹

然后我们把刚新建的文件导入到led文件夹

4

在bsp_led.h文件里

#ifndef __BSP_LED_H__

#define __BSP_LED_H__

#include "stm32f10x.h"

#define LED1_GPIO_CLK RCC_APB2Periph_GPIOB

#define LED1_GPIO_PORT GPIOB

#define LED1_GPIO_PIN GPIO_Pin_5

void LED_GPIO_Config(void);

#endif

5

在bsp_led.c文件里

#include "./led/bsp_led.h"

void LED_GPIO_Config(void)

{

GPIO_InitTypeDef GPIO_InitStruct;

//打开外设时钟

RCC_APB2PeriphClockCmd(LED1_GPIO_CLK,ENABLE);

//配置初始化结构体

GPIO_InitStruct.GPIO_Pin = LED1_GPIO_PIN;

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;

//调用外设初始化函数,把配置好的结构体成员写到寄存器里面

GPIO_Init(LED1_GPIO_PORT,GPIO_InitStruct);

}

6

在main.c文件里

#include "./led/bsp_led.h"

void delay(uint32_t count);

int main(void)

{

LED_GPIO_Config();

while(1)

{

GPIO_SetBits(LED1_GPIO_PORT,LED1_GPIO_PIN);

delay(0xfffff);

GPIO_ResetBits(LED1_GPIO_PORT,LED1_GPIO_PIN);

delay(0xfffff);

}

}

void delay(uint32_t count)

{

for (;count!=0;count--);

}

STM32怎么实现单片机控制LED灯常亮10S后熄灭?

首先实现LED灯的点亮和熄灭,控制连接LED灯的管脚输出高低电平就可以实现。如果电流比较大可以增加三极管驱动电路。10秒定时可以用定时器实现,设置一个1秒的定时器。上电点亮LED灯,并开始计时,10秒时间到熄灭LED就可以了。

新人求助 刚接触STM32 做一个开关控制LED灯闪烁 调试一直没反应

Stm32共有11个定时器:

1.两个高级定时器:TIM1、TIM8-------------------------APB2

2.四个通用定时器:TIM2~TIM5-------------------------APB1

3.两个基本定时器:TIM6、TIM7-------------------------APB1

4.两个看门狗

5.一个系统嘀嗒定时器(SysTick)

主程序main.c

/* 

*说明: 

*PA0:KEY1;PA1:KEY2; 

*PA2:LED1;PA3:LED2; 

*PA9:USART1_TX;PA10:USART1_RX 

*/  

#include "stm32f10x.h"  

#include "stm32f10x_rcc.h"  

#include "stm32f10x_gpio.h"  

#include "stm32f10x_tim.h"  

#include "stm32f10x_exti.h"  

#include "system_stm32f10x.h"  

#include "misc.h"  

  

void RCC_Configuration(void);  

void GPIO_Configuration(void);   

void TIM3_Configuration(void);  

void NVIC_Configuration(void);  

  

int main()  

{  

    SystemInit();  

      

    RCC_Configuration();  

    GPIO_Configuration();   

    TIM3_Configuration();  

    NVIC_Configuration();  

                                                              

    while(1);  

}  

  

void RCC_Configuration(void)    

{     

  ////USART2和USART3都在在APB1上而USART1是在APB2上的  

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);     

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);     

}   

  

void GPIO_Configuration(void)    

{    

  GPIO_InitTypeDef GPIO_InitStructure;    

    

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;    

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  

  GPIO_Init(GPIOA, GPIO_InitStructure);   

}  

  

void TIM3_Configuration(void)    

{  

  TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;  

    

  TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  

    

  TIM_TimeBaseStructure.TIM_Period = 2000;//频率:72MHz  72000000/36000=2000  

  TIM_TimeBaseStructure.TIM_Prescaler = 35999;//36000-1=35999  

  TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;  

  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  

  TIM_TimeBaseInit(TIM3, TIM_TimeBaseStructure);  

    

  TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE );  

  TIM_Cmd(TIM3,ENABLE);  

}  

  

void NVIC_Configuration(void)//配置中断优先级    

{    

  NVIC_InitTypeDef NVIC_InitStructure;    

      

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);    

      

  NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;    

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;    

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;    

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    

  NVIC_Init(NVIC_InitStructure);    

}

中断函数stm32f10x_it.c

#include "..\include\stm32f10x.h"   

#include "..\include\stm32f10x_it.h"  

#include "..\include\stm32f10x_gpio.h"  

#include "..\include\stm32f10x_tim.h"  

  

void TIM3_IRQHandler(void)  

{  

  TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  

    

  if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==Bit_RESET)  

  {  

    GPIO_SetBits(GPIOA,GPIO_Pin_2);  

  }else{  

    GPIO_ResetBits(GPIOA,GPIO_Pin_2);  

  }  

}

中断函数声明头文件stm32f10x_it.h

#ifndef __STM32F10x_IT_H  

#define __STM32F10x_IT_H  

  

/* Includes ------------------------------------------------------------------*/  

/* Exported types ------------------------------------------------------------*/  

/* Exported constants --------------------------------------------------------*/  

/* Exported macro ------------------------------------------------------------*/  

/* Exported functions ------------------------------------------------------- */    

void NMIException(void);  

void HardFaultException(void);  

void MemManageException(void);  

void BusFaultException(void);  

void UsageFaultException(void);  

void DebugMonitor(void);  

void SVCHandler(void);  

void PendSVC(void);  

void SysTickHandler(void);  

void WWDG_IRQHandler(void);  

void PVD_IRQHandler(void);  

void TAMPER_IRQHandler(void);  

void RTC_IRQHandler(void);  

void FLASH_IRQHandler(void);  

void RCC_IRQHandler(void);  

void EXTI0_IRQHandler(void);  

void EXTI1_IRQHandler(void);  

void EXTI2_IRQHandler(void);  

void EXTI3_IRQHandler(void);  

void EXTI4_IRQHandler(void);  

void DMA1_Channel1_IRQHandler(void);  

void DMA1_Channel2_IRQHandler(void);  

void DMA1_Channel3_IRQHandler(void);  

void DMA1_Channel4_IRQHandler(void);  

void DMA1_Channel5_IRQHandler(void);  

void DMA1_Channel6_IRQHandler(void);  

void DMA1_Channel7_IRQHandler(void);  

void ADC1_2_IRQHandler(void);  

void USB_HP_CAN_TX_IRQHandler(void);  

void USB_LP_CAN_RX0_IRQHandler(void);  

void CAN_RX1_IRQHandler(void);  

void CAN_SCE_IRQHandler(void);  

void EXTI9_5_IRQHandler(void);  

void TIM1_BRK_IRQHandler(void);  

void TIM1_UP_IRQHandler(void);  

void TIM1_TRG_COM_IRQHandler(void);  

void TIM1_CC_IRQHandler(void);  

void TIM2_IRQHandler(void);  

void TIM3_IRQHandler(void);  

void TIM4_IRQHandler(void);  

void I2C1_EV_IRQHandler(void);  

void I2C1_ER_IRQHandler(void);  

void I2C2_EV_IRQHandler(void);  

void I2C2_ER_IRQHandler(void);  

void SPI1_IRQHandler(void);  

void SPI2_IRQHandler(void);  

void USART1_IRQHandler(void);  

void USART2_IRQHandler(void);  

void USART3_IRQHandler(void);  

void EXTI15_10_IRQHandler(void);  

void RTCAlarm_IRQHandler(void);  

void USBWakeUp_IRQHandler(void);  

void TIM8_BRK_IRQHandler(void);  

void TIM8_UP_IRQHandler(void);  

void TIM8_TRG_COM_IRQHandler(void);  

void TIM8_CC_IRQHandler(void);  

void ADC3_IRQHandler(void);  

void FSMC_IRQHandler(void);  

void SDIO_IRQHandler(void);  

void TIM5_IRQHandler(void);  

void SPI3_IRQHandler(void);  

void UART4_IRQHandler(void);  

void UART5_IRQHandler(void);  

void TIM6_IRQHandler(void);  

void TIM7_IRQHandler(void);  

void DMA2_Channel1_IRQHandler(void);  

void DMA2_Channel2_IRQHandler(void);  

void DMA2_Channel3_IRQHandler(void);  

void DMA2_Channel4_5_IRQHandler(void);  

                       

#endif /* __STM32F10x_IT_H */  

  

/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/

关于stm32蓝牙控制led灯程序和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。微信号:ymsc_2016

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~