ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

摇杆控制LED灯的亮度

2019-08-16 16:35:36  阅读:308  来源: 互联网

标签:LED USART temp TIM void 亮度 摇杆 ADC USART1


系统概要

在该系统中,所用到的技术有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,USART,temp,TIM,void,亮度,摇杆,ADC,USART1
来源: https://blog.csdn.net/qq_25105061/article/details/99678430

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有