1
完善资料让更多小伙伴认识你,还能领取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) |
|
|
|
只有小组成员才能发言,加入小组>>
3314 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9059 浏览 16 评论
4088 浏览 18 评论
1179浏览 3评论
605浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
599浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2335浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1896浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 13:16 , Processed in 1.409771 second(s), Total 80, Slave 61 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号