我是微控制器编程领域的初学者,目前我正在使用手臂皮质m3 mcu。我想编程adc以读取1khz的电压。 MCU的时钟频率为16Mhz。我对以下两种必须采用的方法感到困惑: 1.使用延迟程序 2.使用wfi指令将mcu置于睡眠状态,以便adc采样1khz
有人可以告诉我一个最佳解决方案吗?如果使用wfi,如何编写子程序??
提前致谢。
答案 0 :(得分:0)
没有一种方法可以“必须”采用。根据具体实现,有不同的选项。
使用延迟例程并不是最好的方法,因为在等待下一个样本启动时你会占用微量。如果你想在等待下一个样本的同时保持微观做其他事情,那么最好的方法是设置一个计时器,每隔一毫秒就会关闭一次。在定时器中断例程中,您可以启动ADC,或者更好地设置无限循环看到的标志和下一个ADC读取的设置。
您可以将微型发送到睡眠状态并每毫秒唤醒它,但是您真的希望STM32什么也不做,只需每秒采样1000次?
你没有让PLL从16MHz上升到更高的频率BTW吗?
答案 1 :(得分:0)
我非常确定这里的解决方案是使用通用计数器/定时器来触发ADC转换。你需要弄清楚的事情:
这不是一个完整的列表,但我相信在STM32标准外设库中可以从这里下载多个这样的示例:
您没有从STM32指定多于ARM Cortex M3,因此请选择上面的右侧。您还可以查看并可能使用其他两个库中的示例中的大多数代码。打开这些zip文件时,请打开名为:
的文件stm32fxxx_stdperiph_lib_um.chm
并按“相关页面”,然后按“STM32Fxxx标准外围设备示例”