像Arduino里的MAP函数,应用在STM32单片机上。

像Arduino里的MAP函数,应用在STM32单片机上。

简介:
如果大家玩过Arduino,想必知道MAP();函数了,这是一个很好用的映射函数,下面程序列举如下:

int val = analogRead(0);        //读取0口的值
val = map(val, 0, 1023, 0, 255);//从0-1023映射到0-255
analogWrite(9, val);           //把映射后的值写给9口

像上面3行代码表达意思是:将ADC0口的数值读到 val 变量上, 再通过map函数将变化值从0-1024 映射成变化区间为0-255,再传给val。 再在9号端口输出对应的PWM值。
Arduino其实是将函数封装了一遍,如果想在STM32上使用该好用的函数,可以自己写一遍,下面程序列举如下:

//输入值分别是:输入值,输入最小值,输入最大值,输出最小值,输出最大值
float map(float val, float I_Min, float I_Max, float O_Min, float O_Max)
	{
		return(((val-I_Min)*((O_Max-O_Min)/(I_Max-I_Min)))+O_Min);
   }
  

将上面代码写入程序中,就可以调用MAP();函数了。

  • map函数可以负向映射,如:ADC_UP_MAP = map(ADC_ConvertedValue[1],1900,1500,0,255); 就是将ADC_ConvertedValue[1]读到的值从1900-1500,映射成0-255.
  • 还值得注意的一点是加入ADC_ConvertedValue[1]的值没在输入最大值最小值范围内也会对应的映射,如加入ADC_ConvertedValue[1]的值是2061,则映射的是约为:103。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值