宫梓萱
获得 41 次赞
帮助过112人
首先说明下:楼下的问题,一上来就建议使用18位AD,简直误人子弟。再来回答你的问题:使用内部的参考电压的话,你看你的mcu有没有这个Vref这个引脚,如果有的话你可以接3.3V电源。如果没有这个引脚的话,那应该有VDDA吧,就直接VDDA接3.3V就行了。stm8的内部ADC是10位的,如果接3.3V参考电压的话,那么量化电压就是3.2mv了。这个分辨能力做个简易的电压表应该够了。然后你再加一个数字滤波算法就行,直接做个平均算法就行。 对你有借鉴的话,请点赞设置最佳回答。
我猜测是你的电脑性能不够,另外你虚拟机上的跑的什么系统了,是linux吗,另外虚拟机上最好只跑一个系统,不要再虚拟机上跑几个系统
我认为没有必要全部分配,以满足使用需求为主。如果你想分配全部的你可以试下,亲自动手收获最大。另外对于RTOS的话,主流的OS都存在两种任务堆栈的申请方法。一种用户自己在栈上创建一个全局数组,另一种就是OS自动在堆上申请空间。从这里可以看出来,无论哪种方法,用户都必须注意可用的堆栈大小。所以对于启动文件中设置堆栈还是很有必要的。如果对你有启发,请点赞并设置最佳回答
你可以这样写,一个task专门负责ADC采集,其他的任务就是获取它的采集值而已。这样就不会有冲突了。并且ADC的采集优先级最好比其他任务高。这样其他任务就只能以可读的方式来读取ADC值,当然如果设计得当的话,也就是要避免其它两个task读取的时候又被ADC的task抢占。能避免这种情况的话就可以不用互斥量了。