stm32亮灯后灯不能灭

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32亮灯后灯不能灭相关的知识,希望对你有一定的参考价值。

参考技术A stm32亮灯后灯不能灭?
答案如下:系统代码出错了!正确的操作方法是,首先第一步先点击打开设置按钮,然后帐户管理在页面点击账号安全中心进入即可完成!多实践测试。
参考技术B stm32亮灯后灯不能灭,STM32实现流水灯的亮灭俩种方法 1首先我们都要初始化LED的配置voidLEDInit()GPIO_InitTypeDef GPIO_InitStructure;SystemInit();RCC_APB2Perip... 参考技术C stm32单片机LED灯常亮是可能设置的时间太长。可以通过以下使其熄灭首先实现LED灯的点亮和熄灭,控制连接LED灯的管脚输出高低电平就可以实现。如果电流比较大可以增加三极管驱动电路。10秒定时可以用定时器实现,设置一个1秒的定时器。上电点亮LED灯,并开始计时,10秒时间到熄灭LED就可以了。

STM32基础入门

任务描述

编程实现以下功能:

1.创建CUBMAX工程,并用Keil修改程序,编译后下载到M3,当程序启动时,LED9开始闪烁。(1)

2.使用定时器实现,每过1秒LED1、LED3、LED5、LED7、依次亮起,后灯亮起时,前灯灭。(1)

3.在M3上选择适当引脚连接继电器,继电器控制灯泡。当KEY1键按下,灯泡亮,KEY2按下灯泡灭(1)

4扩展试题

M3模块连接光照传感器,采集到的光照数据通过USART5发送到云平台,使云台出现光照数据。(2)

光明传感器发往物联网网关的帧协议格式如下:

说明

START

ADDR

CMD

LEN

TYPE

DATA

CheckSum

长度

1Byte

2Byte

1Byte

1Byte

1Byte

2Byte

1Byte

0xDD

0x0001

0x02

0x0x09

0x06

 

 

注:2字节时先发高位。

 

一、设备

  • M3模块1个
  • 双联继电器一块
  • 灯泡一个
  • 物联网王网关一个
  • 导线若干

二、任务描述

2.1 创建CUBMAX工程,并用Keil修改程序,编译后下载到M3,当程序启动时,LED9开始闪烁

技术图片

技术图片

 生成工程,添加代码

技术图片

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
        HAL_GPIO_TogglePin(LED9_GPIO_Port,LED9_Pin);
        HAL_Delay(500);

2.2、使用定时器实现,每过1秒LED1、LED3、LED5、LED7、依次亮起,后灯亮起时,前灯灭。

技术图片

技术图片

 

 技术图片

 生成代码

 /* USER CODE BEGIN 2 */
    //启动定时器
    if(HAL_TIM_Base_Start_IT(&htim6)!=HAL_OK)
    {
        Error_Handler();
    }
  /* USER CODE END 2 */
/* USER CODE BEGIN 4 */
//定时器回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    //是否
    if(TIM6 == htim->Instance)
    {
        
        num = num>>2;
        if(num == 0)
            num = 0x80;
        HAL_GPIO_WritePin(GPIOE,0xff,GPIO_PIN_SET);
        HAL_GPIO_WritePin(GPIOE,num,GPIO_PIN_RESET);
    }
}

技术图片

2.3、在M3上选择适当引脚连接继电器,继电器控制灯泡。当KEY1键按下,灯泡亮,KEY2按下灯泡灭

技术图片

 

 技术图片

 

 技术图片

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    if(GPIO_Pin & GPIO_PIN_13)
    {
        //keydown_flag = 1;
        //count +=1;
        HAL_Delay(300);
        HAL_GPIO_WritePin(GPIOE,Relay_Pin,GPIO_PIN_SET);
        //keydown_flag = 0;
    }
}

技术图片

//判断引脚PD13是否为高电平
        if((~GPIOD->IDR)& GPIO_IDR_IDR13)
        {
            //是高电平让引脚PE为低电平,从而使灯泡熄灭
            HAL_GPIO_WritePin(GPIOE,Relay_Pin,GPIO_PIN_RESET);
        }

2.4、扩展试题

3模块连接光照传感器,采集到的光照数据通过USART5发送到云平台,使云台出现光照数据。(2)

光明传感器发往物联网网关的帧协议格式如下:

说明

START

ADDR

CMD

LEN

TYPE

DATA

CheckSum

长度

1Byte

2Byte

1Byte

1Byte

1Byte

2Byte

1Byte

0xDD

0x0001

0x02

0x0x09

0x06

 

 

注:2字节时先发高位。

技术图片

 

 技术图片

     //HAL_Delay(1000);
  //light
        pushbuf[0]=0xDD;    //开头
        pushbuf[1]=0x06;    //地址位
        pushbuf[2]=0x00;
        pushbuf[3]=0x02;    //命令码 0x02RS485,0x01CAN
        pushbuf[4]=0x09;    //长度
        pushbuf[5]=0x06;    //传感器类型
        pushbuf[6]=Get_Voltage()*10>>8;        //数据位,高八位
        pushbuf[7]=Get_Voltage()*10&0xFF;    //第八位
        pushbuf[8]=CHK(pushbuf,8);            //校验位
        HAL_UART_Transmit(&huart5,pushbuf,9,0xffff);
        
        }
static uint8_t CHK(const uint8_t *buf, uint8_t len)
{
    uint8_t  RX_CHX=0;
    while(len--) {
        RX_CHX+= *buf;
        buf++;
    }
    return RX_CHX&=0xff;
}


uint16_t Get_Voltage(void)
{
    uint16_t voltage;
    uint16_t adcx=0;
    HAL_ADC_Start(&hadc1);  //启动ADC
    HAL_ADC_PollForConversion(&hadc1,10); //等待采集完成
    adcx = HAL_ADC_GetValue(&hadc1); //获取ADC采集数据
    voltage=(adcx*330)/4096; //将采集到的数据转换为电压值
    HAL_ADC_Stop(&hadc1); //停止ADC
    return voltage;
}

以上是关于stm32亮灯后灯不能灭的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ4872: [Shoi2017]分手是祝愿 期望DP

我想实现的功能是当按键KEY2按下时,LED2亮(STM32f107开发板),软件运行没错,但是下载后灯不亮

STM32单片机手机WIFI无线APP控灯亮灭亮度系统

STM32使用PWM控制LED灯的亮灭程度

STM32使用PWM控制LED灯的亮灭程度

STM32使用PWM控制LED灯的亮灭程度