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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

摇杆控制LED灯的亮度

發布時間:2025/3/15 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 摇杆控制LED灯的亮度 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

系統概要

在該系統中,所用到的技術有ADC、DMA、TIM、USART。有些可以沒有必要使用,但為了作為前一段時間的總結,所以把這幾種都給使用上了。說一下做這個的思路,之前每一塊都已經學習過,并且都已經實現了,所以想著做這個小項目來練練手。在這里面ADC和DMA讀取搖桿的位置,TIM用來輸出PWM控制LED的亮度,USART串口用來輸出打印一些運行時的信息。如下圖所示:

系統實現

項目的文件結構圖:

看一下項目的主要代碼吧!
項目的所有源代碼:https://github.com/Dynamicwang/Control-light.git
下面主要來看一下主函數(main.c):

#include "usart.h" #include "TIM.h" #include "adc.h"u8 Input_Value = 0; extern uint16_t Conver_Value[10]; int i; float temp;void Init(void) {USART1_Config();TIM3_Config(1000);ADC1_Config(); }int main(void) {Init();ADC_SoftwareStartConvCmd(ADC1,ENABLE);while(1){temp = 0;for(i = 0;i < 10;i++){temp += Conver_Value[i];}temp = temp * 3.3 /40960 *1000;TIM3_Config((int)(temp/3300 * 1000));} }void USART1_IRQHandler(void) {if(USART_GetITStatus(USART1,USART_IT_RXNE) == SET){USART_ClearFlag(USART1,USART_FLAG_RXNE);Input_Value = USART_ReceiveData(USART1);} }

在主函數中,我們首先初始化各個文件中的配置,然后ADC軟件觸發,主函數進入死循環,輪詢操作。首先我們將ADC采集的十次搖桿的值進行求和。求完和后對該數值進行轉換。最后將計算的值歸一化到0-1000范圍內,最后一步配置TIM輸出的PWM的高電平持續時間。

總結

以上是生活随笔為你收集整理的摇杆控制LED灯的亮度的全部內容,希望文章能夠幫你解決所遇到的問題。

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