这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 后期驱动必备延时函数

共16条 1/2 1 2 跳转至

后期驱动必备延时函数

高工
2014-04-01 12:32:58     打赏


给大家贡献一个延时函数

MCU:STN32F103C8

MCU配置:8M晶振,默认时钟配置,外设APB,GPIO速度50MHz

这个延时函数可以精确到1us

后期各种驱动必备

http://forum.eepw.com.cn/thread/249382/2#12


院士
2014-04-01 12:53:37     打赏
2楼
嘿嘿 用一个timer 就行了吧!

高工
2014-04-01 13:28:45     打赏
3楼
这个F103C8资源很紧张啊 拿timer来定时太奢侈了 用一个少一个啊

院士
2014-04-01 22:23:34     打赏
4楼

回到家里了,下载看看,如何实现的。

我觉得4个timer 基本上就足够了。

再多的timer就会出现任务调度的问题了


院士
2014-04-01 22:45:53     打赏
5楼
这样写函数肯定精确不到1us 

高工
2014-04-01 22:56:31     打赏
6楼

代码是拿来主义的

 乔老板下载测测看

 我用路边货测试的

 挺精确 

 不过不纠结,精确的软件延时本身就不靠谱。


高工
2014-04-01 22:57:17     打赏
7楼

我研究了几个晚上,才发现多个timer会有这个问题。

本来想用4个timer实现4路PWM的

后来发现1个就够了


高工
2014-04-02 09:31:42     打赏
8楼
确实,TIM1能够同时实现4路PWM输出。这四路输出除了周期一样之外,剩下的都可以不一样。

高工
2014-04-02 09:38:20     打赏
9楼

我以为这个延时啥高级货呢。。。

我贴出来吧,给别人省点分

void delay_ms(unsigned long t )
    {
    unsigned long int i;
      unsigned long int j;
    j=Fclk/1000 * t;
    for(i = 0; i < j; i++);
    }
 
void delay_us(unsigned long int t)
    {
    unsigned long int i;
    unsigned long int j;
    j=Fclk/1000000 * t;
    for(i = 0; i < j; i++);
    }
        


高工
2014-04-02 10:17:33     打赏
10楼
军爷,好久不见……

共16条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]