2020年TI杯省赛A题制作*
-
期待已久的电子竞赛终于在10月10号那天拉开了序幕。之前根据官方给出的材料清单,我们提前购买了ADS1292模块和LMT70温度传感器模块。等到题目出来之后,我们便很快的决定出我们要做的题目是A题。
-
确定好模块之后,我们很快决定出我们每个人要做的模块,分工明确。这次的电赛总计用到蓝牙无线传输模块,ADS1292模块,LMT70模块,mpu6050计步模块。
-
对于ADS1292模块,之前官方给出的材料清单有心电信号模拟器,但是题目出来之后,我们发现我们想的还是太简单了。题目要求我们用人体作为信号源,如果用人体作为信号源的话,我们之前买的模块没有考虑到滤波,所以用硬件滤波的话基本不可能了。所以我们打算用软件滤波。软件滤波的最好方法是用matlab,但是matlab我们队的几个人都没有学过。最终我们没有对心电图进行滤波。
对于LMT70模块,可以说我们做这个模块特别的顺利。在做的时候我们查看了它的官方数据手册。完整的代码。
```cpp
#include "adc.h"
#include "delay.h"
void Adc_Init(void)
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1, ENABLE ); //使能ADC1通道时钟
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //设置ADC分频因子6 72M/6=12,ADC最大时间不能超过14M
//PA0作为模拟通道输入引脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入引脚
GPIO_Init(GPIOA, &GPIO_InitStructure);
//PA1作为模拟通道输入引脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入引脚
GPIO_Init(GPIOA, &GPIO_InitStructure);
//PA2作为模拟通道输入引脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入引脚
GPIO_Init(GPIOA, &GPIO_InitStructure);
ADC_DeInit(ADC1); //复位ADC1,将外设 ADC1 的全部寄存器重设为缺省值
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC工作模式:ADC1和ADC2工作在独立模式
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //模数转换工作在单通道模式
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //模数转换工作在单次转换模式
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //转换由软件而不是外部触发启动
ADC_InitStructure