日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LED驱动设计及实现

發布時間:2025/4/5 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LED驱动设计及实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1 LED驅動流程圖分析
    • 1.1 led_on流程圖分析
    • 1.2 led_blink流程圖分析
  • 2 代碼實現

1 LED驅動流程圖分析

這里主要分析led_on和led_blink流程。

1.1 led_on流程圖分析

1.2 led_blink流程圖分析


2 代碼實現

代碼使用HAL庫開發,并且配置freertos。HAL配置太簡單了,沒啥需要注意的就不記錄了。

drv_led.h:

#ifndef __DRV_LED_H #define __DRV_LED_Hvoid led_init(void); void led_on(uint32_t time_sec); void led_off(void); void led_blink(uint32_t period,uint32_t time_sec);#endif

drv_led.c:

#include <stdbool.h> #include <string.h> #include "main.h"#include "FreeRTOS.h" #include "timers.h"#define LED_OFF() HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET) #define LED_ON() HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET) #define LED_TOGGLE() HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin)typedef enum{LED_STATE_OFF,LED_STATE_ON,LED_STATE_BLINK, }led_state_e;static bool is_inited=false; static TimerHandle_t timer_led; static uint8_t state;struct led_control_t {uint32_t time_on;uint32_t time_blink;uint32_t period_blink;uint32_t cnt_time_on;uint32_t cnt_time_blink;uint32_t cnt_period_blink; }ledctl;void led_timer_callback( TimerHandle_t xTimer ) {switch (state){case LED_STATE_ON:ledctl.cnt_time_on++;if(ledctl.cnt_time_on>=ledctl.time_on){LED_OFF();ledctl.cnt_time_on=0;xTimerStop(timer_led,1000);}break;case LED_STATE_BLINK:ledctl.cnt_time_blink++;ledctl.cnt_period_blink++;if(ledctl.cnt_time_blink>=ledctl.time_blink){LED_OFF();ledctl.cnt_time_blink=0;xTimerStop(timer_led,1000);break;}if(ledctl.cnt_period_blink>=ledctl.period_blink){ledctl.cnt_period_blink=0;LED_TOGGLE();}break;default:break;}}void led_init(void) {state=LED_STATE_OFF;memset(&ledctl,0,sizeof(ledctl));timer_led=xTimerCreate("timer_led",100,pdTRUE,NULL,led_timer_callback);LED_OFF();is_inited=true; } void led_on(uint32_t time_sec) {if(!is_inited)return ;xTimerStop(timer_led,1000);ledctl.time_on=time_sec*10;ledctl.cnt_time_on=0;LED_ON();state=LED_STATE_ON;xTimerStart(timer_led,1000); } void led_off(void) {if(!is_inited)return ;xTimerStop(timer_led,1000);LED_OFF();state=LED_STATE_OFF;ledctl.cnt_time_on=0;ledctl.cnt_time_blink=0;ledctl.cnt_period_blink=0; } void led_blink(uint32_t period,uint32_t time_sec) {if(!is_inited)return ;xTimerStop(timer_led,1000);ledctl.time_blink=time_sec*10;ledctl.period_blink=period;ledctl.cnt_time_blink=0;ledctl.cnt_period_blink=0;LED_ON();state=LED_STATE_BLINK;xTimerStart(timer_led,1000); }

總結

以上是生活随笔為你收集整理的LED驱动设计及实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 好吊色视频一区二区三区 | 亚洲国产私拍精品国模在线观看 | 另类综合在线 | 69sex久久精品国产麻豆 | 国产一二三区精品 | 日韩免费 | 狠狠干导航 | 美丽姑娘免费观看在线观看 | 午夜在线观看一区 | 午夜性视频 | 免费看美女隐私网站 | 精品国产无码一区二区三区 | 午夜精品99 | 美女隐私免费 | 国产精品麻豆成人av电影艾秋 | 野花av| 小毛片网站 | 国产xxx视频 | 久久久1| 中文字幕一区二区三区四区视频 | 免费无码国产精品 | 久久资源365 | 校园春色综合 | 亚洲淫欲 | 少妇2做爰bd在线意大利堕落 | 99视屏 | 毛片网站在线观看 | 国产精品国产三级国产aⅴ无密码 | www.蜜臀av.com| 日韩欧美手机在线 | 领导揉我胸亲奶揉下面 | 免费欧美视频 | 亚洲一区小说 | 1000部多毛熟女毛茸茸 | 中文字幕在线欧美 | 天天躁日日躁狠狠躁av麻豆 | 懂色av| 国产精品无码久久久久成人app | av片在线播放 | av中文字 | 国产亚洲三级 | 亚洲免费国产 | 日韩色婷婷 | 久久久久久久久久久久久女过产乱 | 国产成人精品无码免费看81 | 动漫裸体无遮挡 | 黄在线免费看 | 久久久精品小视频 | 欧美性猛交ⅹxxx乱大交3 | 精品久久久在线观看 | 欧美亚洲色综久久精品国产 | 中文字幕15页 | 日本亲与子乱人妻hd | 一区二区三区免费播放 | 国产一区二区免费看 | 欧美一级黄视频 | 中文字幕视频在线观看 | 中文字幕久久网 | 亚洲成人一二三区 | 国产精彩视频 | 91福利在线导航 | 亚洲熟妇一区二区三区 | 制服 丝袜 综合 日韩 欧美 | 午夜精品一区二区三区三上悠亚 | 久久久久久蜜桃 | 日韩精品一区二区在线 | jizz色| 污免费视频 | 长篇高h乱肉辣文 | 国产精品 欧美 日韩 | 久久久久欧美 | 91精品国产一区二区无码 | se日韩| a在线v | av免费视屏| 亚洲精品高潮久久久久久久 | 国产成人一区二区在线 | 午夜色婷婷 | 欧美成人精品一区二区男人小说 | 国产成人无码精品久久 | 综合激情在线 | 国产成人免费视频 | 成人午夜sm精品久久久久久久 | 中文字幕有码视频 | 91国产精品一区 | 色网在线免费观看 | 久久青草免费视频 | 国产性猛交╳xxx乱大交 | 天天操穴| 重口另类 | 久久精品国产亚洲av麻豆 | 特黄在线| 国产伦人伦偷精品视频 | 3级av| 欧美图片一区二区 | 欧美精品xx| 黄色网址链接 | 日本福利片在线观看 | 久久久噜噜噜久久久 |