思维导图
练习题
1.使用ADC采样光敏电阻数值,如何根据这个数值调节LED灯亮度。
//打开定时器3的通道3,并且设置为PWM功能
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */\
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
HAL_ADC_Start(&hadc);//开启ADC采样
//获取ADC值
adc_val = HAL_ADC_GetValue(&hadc);
vlot = adc_val / 4095.0 * 999;
printf("adc_val:%d\r\n",adc_val);
int val = vlot;
TIM3->CCR3 = 999-val;
HAL_Delay(50);
}
2.总结DMA+空闲中断接收数据的使用方法
需要在STM32CubeMX中打开串口中断,在DMA设置中添加串口DMA接收,下载代码中使用HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)函数中,填入对应串口,开始接收数据,HAL_UARTEx_RxEventCallback()回调函数执行接收数据的判断结果处理