历史上的今天
今天是:2025年02月16日(星期日)
2020年02月16日 | STM8L101F3P6关于毫秒级延时函数不同写法的波形
2020-02-16 来源:eefocus
总结一下STM8L101F3P6工作在16MHz下,利用死循环、中断等不同写法的微秒级延时函数精度的情况。
一、死循环空指令的写法,延时函数程序如下:
/******************************************************************************/
/* Function name: Delay_ms */
/* Descriptions: 毫秒级延时函数函数,16MHz时钟 */
/* input parameters: nCount延时时间 */
/* output parameters: 无 */
/* Returned value: 无 */
/******************************************************************************/
void Delay_ms(unsigned int nCount)
{
uint16_t i=0,j=0;;
for(i=0;i for(j=0;j<1142;j++) {;} } } 调用函数如下: /******************************************************************************/ /* Function name: main */ /* Descriptions: 主函数 */ /* input parameters: 无 */ /* output parameters: 无 */ /* Returned value: 无 */ /******************************************************************************/ main() { BoardInit(); enableInterrupts(); while(1) { GPIO_ResetBits(GPIOC,GPIO_Pin_2); Delay_ms(1); GPIO_SetBits(GPIOC,GPIO_Pin_2); Delay_ms(1); } } Delay_ms(1);大约延时1毫秒 Delay_ms(10);大约延时9.9835毫秒 Delay_ms(100);大约延时99.74毫秒 Delay_ms(1000);大约延时997.05毫秒 可以看到,这种利用死循环来写的毫秒级的延时,与微秒级的延时来比,相对来说,精度已经提高了不少。但是要知道,这种死循环的延时是与代码量也有关系的,在代码变多的情况下,如果想提高ms级的精度,要适当的调整循环值,并且要用示波器进行观察。这种方法的缺点就不多说了,CPU占用率太高,效率低下,浪费能源。 Delay_ms(1)的波形: Delay_ms(10)的波形: Delay_ms(100)的波形: Delay_ms(1000)的波形:


下一篇:STM8S延时函数
史海拾趣
|
datasheet上说150m运行时候需要1.9v的核心电压。但是我死活没有找到电流最少要多少,也就是说我核心全速的时候要消耗多少电流。 网上的板子原理图都用1117,但是我不是很喜欢这块片子,输出端的电容要100uF。 在ti上找了1.9v的片子,但是输出电流 ...… 查看全部问答> |
|
【视频分享】电源设计小贴士49:多层陶瓷电容器常见小缺陷的规避方法 各位好久不见啦!!最近美女小编感冒了,在家休息,有好一阵子没和大家分享好的东东啦! 今天和大家分享TI电源设计小贴士系列的视频,讲解得十分透彻。 因其小尺寸、低等效串联电阻(ESR)、低成本、高可靠性和高纹波电流能力,多层陶瓷 (MLC) 电容 ...… 查看全部问答> |
|
SSI2.DLL是wince里面的一个动态链接库,主要作用是调动设备中的激光扫描头,由于本人不会编程,特此求助附件是相应的.H和.LIB文件,说明文档还有示例文件,希望可以得到帮助,帮忙生成DLL文件 … 查看全部问答> |
|
本帖最后由 574433742 于 2015-8-4 17:42 编辑 刚开始 鼓捣这个NIOS II,搜了些资料,自己跟着做,添加了PIO但是输出的IP没有 IO端口,不知如何是好? 求 知情人士 告知,,谢谢了。。。。 如图所示: 图1:Qsys 图2:IP … 查看全部问答> |




