思维导图
1.使用ADC采样光敏电阻数值,如何根据这个数值调节LED灯亮度。
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_3);//打开定时器3的通道3并且设置为PWM功能
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
int adc_val = 0;
while (1)
{
HAL_ADC_Start(&hadc);//打开ADC采样
adc_val = HAL_ADC_GetValue(&hadc);
printf("%d\r\n",adc_val);
adc_val = adc_val/4096.0f*999;
TIM3->CCR3 = adc_val;
HAL_Delay(100);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
2.总结DMA+空闲中断接收数据的使用方法
当数据在一定时间内没有接收到数据会产生空闲中断,可以在空闲中断中处理数据。
以DMA+空闲中断的方式接收数据:HAL_UARTEx_ReceiveToIdle_DMA()
中断函数:HAL_UARTEx_RxEventCallback()
适用于数据量大且数据长度不确定的情况下