电赛2020A题心电信号测量比赛代码讲解。 无线运动传感器节点

这次的A题不是很难,直接开始吧

初始化函数就不写上去了,没什么价值。我把所有代码打包了,想下载的点这里:
电赛2020A题心电信号测量比赛代码
具体芯片的详解可以留言,有人看就再详细写一下具体的芯片细节

——————————————————————————
先把引脚标注好,好的代码风格会让你事半功倍

/*心电图

/RESET—PB10
START—PB11
/DRDY—PA8
/CS------PB12
MOSI---PB15
MISO---PB14
SCK-----PB13

*/

/*串口通信1
PA9
PA10
*/

/*
温度模块
PA0
*/

/*
蓝牙模块
PA2
PA3
*/

/*
按键模块
PB8 按键
PB9 按键
PA1 灯
*/

我们先明确一下思路,就是通过按键去切换不同的模式,那我们就要写一个按键扫描函数

按键扫描函数

这个是可以通过写进去不同的mode来控制模式。mode=1就是摁一下执行一次,mode=0就是摁一下执行完了,key就等于0了,再摁一次,key就又等于1,这次不干活,相当于保证安全。key=1的时候才干活。

u8 KEY_Scan(u8 mode)
{
   
	static u8 key=1;
	if(key==1&&(KEY1==0||KEY2==0)) //任意一个按键按下
	{
   
		delay_ms(10);  //消抖
		key=0;
		if(KEY1==0)
		{
   
			return KEY1_VALUE; 
		}
		else if(KEY2==0)
		{
   
			return KEY2_VALUE; 
		}
	}
	else if(KEY1==1&&KEY2==1)    //无按键按下
	{
   
		key=1;
	}
	if(mode==1) //连续按键按下
	{
   
		key=1;
	}
	return 0;
}

温度处理函数

然后是温度模块,用的是lmt70,室温下它输出的是900多毫伏的电压,我们直接用stm32自带的adc去转换即可。
temp=(float)adcx*(3300.000/4096);这句,因为供电是3.3v,而且分辨率是4096,所以相当于把3.3分成4096份,adc读出来多少份,乘以对应每份多少mv,就是结果。输出结果乘个电压和温度关系的二次函数,就得到了温度。

lmt70详解点这里:(挖坑,还没写)


void tempGET(void)
{
   	
	u16 adcx;
	float temp;
	float tem;
	while(1)
	{
   
		key=KEY_Scan(0);
		if(key==2){
     return;  }
		adcx=Get_Adc(ADC_Channel_0);
		temp=(float)adcx*(3300.000/4096);
	
		//	printf("adcx:%d\t",adcx);
		//	printf("V:%f   ",temp);
		adcx=(unsigned long)(temp*1000
  • 10
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值