完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
用DMA采集单路电压总是出错,就用了定时器和中断的方式
开启定时器HAL_TIM_Base_Start_IT(&htim17);//timer 10ms定时器中断到了,开启电压采集,进行电压判断(注意这是上一次采集的电压,所以会有10ms延时) void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)//10ms { uint32_t ad_temp; if (htim->Instance == htim17.Instance) { /* Toggle LED */ HAL_ADC_Start_IT(&hadc); if(ADC_num < 2048) HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); else HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); } AD采集完成中断,停止AD采集,停止定时器,获取电压值,开启定时器 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { HAL_ADC_Stop_IT(hadc); HAL_TIM_Base_Stop_IT(&htim17); ADC_num = HAL_ADC_GetValue(hadc); HAL_TIM_Base_Start_IT(&htim17); } 注意!!!ADC配置中,由于时钟是48MHz,所以ClockPrescaler为Synchronous clock mode divided by 4,这样ADC的时钟为12MHz(ADC时钟不能超过14MHz) |
|
|
|
|
只有小组成员才能发言,加入小组>>
1599 浏览 0 评论
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
4738 浏览 0 评论
4229 浏览 9 评论
3822 浏览 16 评论
4398 浏览 1 评论
4211浏览 3评论
2380浏览 0评论
3394浏览 0评论
1158浏览 0评论
2843浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 07:11 , Processed in 0.859735 second(s), Total 73, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
477