服装设计师有前途吗网站的优化公司
服装设计师有前途吗,网站的优化公司,信息流优化,发布页全部页面设计一、适用场景 适用场景#xff1a;心率/脉搏检测实验、可穿戴设备入门#xff08;手环/指夹#xff09;、健康监测教学演示、生理信号采集与滤波算法练习、运动/康复监测、物联网健康数据采集等。
二、器材清单
手指心跳检测模块1
stm32f103#xff08;或其它 STM32 void adcgpio_init() { GPIO_InitTypeDef PC; //使能时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); PC.GPIO_Pin GPIO_Pin_1; PC.GPIO_Mode GPIO_Mode_AIN; GPIO_Init(GPIOC,PC); } void adcmode_init() { ADC_InitTypeDef adc; NVIC_InitTypeDef nvic; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2,ENABLE); adc.ADC_ModeADC_Mode_Independent; adc.ADC_ScanConvMode DISABLE; adc.ADC_ContinuousConvMode ENABLE; adc.ADC_ExternalTrigConv ADC_ExternalTrigConv_None; adc.ADC_DataAlign ADC_DataAlign_Right; adc.ADC_NbrOfChannel 1; ADC_Init(ADC2,adc); RCC_ADCCLKConfig(RCC_PCLK2_Div8); ADC_RegularChannelConfig(ADC2,ADC_Channel_11,1,ADC_SampleTime_55Cycles5); ADC_ITConfig(ADC2,ADC_IT_EOC,ENABLE); ADC_Cmd(ADC2,ENABLE); ADC_ResetCalibration(ADC2); while(ADC_GetResetCalibrationStatus(ADC2)); ADC_StartCalibration(ADC2); while(ADC_GetCalibrationStatus(ADC2)); ADC_SoftwareStartConvCmd(ADC2,ENABLE); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3); nvic.NVIC_IRQChannel ADC1_2_IRQn; nvic.NVIC_IRQChannelPreemptionPriority 3; nvic.NVIC_IRQChannelSubPriority 0; nvic.NVIC_IRQChannelCmd ENABLE; NVIC_Init(nvic); } void adctime_Init() { adcgpio_init(); adcmode_init(); } void ADC1_2_IRQHandler(void) { if(ADC_GetITStatus(ADC2,ADC_IT_EOC) SET) { adc_light ADC_GetConversionValue(ADC2); } ADC_ClearITPendingBit(ADC2,ADC_IT_EOC); } #include stm32f10x.h #include stdio.h #include bsp_SysTick.h #include adc_time.h #include breathing.h #include bsp_usart.h char showlight[20]; extern volatile uint16_t adc_light; int main() { static double oldValue 0; double value 0; SysTick_Init(); USART_Config(); adctime_Init(); while(1) { value 0.75 * oldValue (1 - 0.75) * adc_light;//这个平滑就是取本次和上一次测量数据的加权平均值 sprintf(showlight,light:%f\n,value); Usart_SendString(USART1,showlight); oldValue value; Delay_us(1000000); } // return 0; }HAL库int main(void) { /* USER CODE BEGIN 1 */ char show[20]{0}; static double oldValue 0; double value 0; /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_ADC1_Init(); MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { //#1。启动常规序列 HAL_ADC_Start(hadc1); //#2.等待转换完成 HAL_ADC_PollForConversion(hadc1,HAL_MAX_DELAY); //#3。获取结果 uint32_t dr HAL_ADC_GetValue(hadc1); //#4.把结果转换成电压 value 0.75 * oldValue (1 - 0.75) * dr;//这个平滑就是取本次和上一次测量数据的加权平均值 sprintf(show,adc:%d,light:%f\r\n,dr,value); HAL_UART_Transmit(huart1,show,strlen(show),HAL_MAX_DELAY); oldValue value; HAL_Delay(500); // ifvoltage1.5f//光线暗 // HAL_GPIO_WritePin(GPIOA,GPIO_PIN_13,GPIO_PIN_SET);// 灭灯 // else//光线亮 // HAL_GPIO_WritePinGPIOA,GPIO_PIN_13GPIO_PIN_RESET); // 亮灯 /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } 六、讲解视频https://www.bilibili.com/video/BV1VCvvBCEeb/?spm_id_from333.1387.search.video_card.clickvd_sourcef7dfe1b14f260b9cc3a146d2dbfd0719https://www.bilibili.com/video/BV19xvBBQER4/?spm_id_from333.1387.search.video_card.clickvd_sourcef7dfe1b14f260b9cc3a146d2dbfd0719https://www.bilibili.com/video/BV1QhvBBEE6G/?spm_id_from333.1387.search.video_card.clickvd_sourcef7dfe1b14f260b9cc3a146d2dbfd0719