你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
查看全部评分
michael_nuaa 发表于 2019-4-12 11:12 to @edmundlee 软件中循环输出GPIO,用逻辑分析仪测试发现大概需要2.45us,和理论计算2.17us有一点差距。
michael_nuaa 发表于 2019-4-12 12:06 问题算是找到了 if (ADC_GetITStatus(ADC1, ADC_IT_EOC) == SET) 占用了较长时间,后面估计要改成汇编了
你的MCU正在执行其他程序,此时中断发生,MCU需要判断此中断以及优先级,然后保护现场进行压栈,然后取中断服务程序地址,还有hclk速率不要分频这会影响存储速度,同样增加时间,你想想从哪里能够省下时间?
评分
查看全部评分
启动ADC转换拉一个IO高 ,进入ADC中断后再拉低,看脉冲宽度。
评分
查看全部评分
先确认了是哪儿的问题才想解决方案吧, 除非你有N个中断在ADC中断前发生了, 否则中断的响应时间是不可能是几个us的
所以我觉得是转换时间的问题
评分
查看全部评分
to @edmundlee
软件中循环输出GPIO,用逻辑分析仪测试发现大概需要2.45us,和理论计算2.17us有一点差距。
使用中断方式发现从触发到进入中断需要3.48us
if (ADC_GetITStatus(ADC1, ADC_IT_EOC) == SET) 占用了较长时间,后面估计要改成汇编了
谢谢各位
if (ADC_GetITStatus(ADC1, ADC_IT_EOC) == SET) //if (ADC1->SR & 0x02)
{
GPIO_SetBits(GPIOB, GPIO_Pin_5);
ADC_ClearITPendingBit(ADC1, ADC_IT_EOC);
}
不清楚你的测试点在哪儿, 所以不能确定这时间是否合理
用奇存器可以了
指令数是恒定的,要快就加快主频,缩短指令执行时间。
你可以试试主频配置到最高,甚至可以尝试超频;看是否能达到你的需求。
如果最高频率达不到要求,而超频可以,那你可能要换更快的CM4系列
评分
查看全部评分