打印
[MM32软件]

新人想问下mm32f031怎么做到us的延时

[复制链接]
1947|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
heny20|  楼主 | 2019-12-17 17:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
官方给的sdk例程中没有延时方面的,只有用systick做的粗略的ms延时
/********************************************************************************************************
**º¯ÊýÐÅÏ¢ £ºdelay_init(void)
**¹¦ÄÜÃèÊö £ºsystickÑÓʱº¯Êý³õʼ»¯
**ÊäÈë²ÎÊý £ºÎÞ
**Êä³ö²ÎÊý £ºÎÞ
********************************************************************************************************/
void delay_init(void)
{
    if (SysTick_Config(SystemCoreClock / 1000)) {
        /* Capture error */
        while (1);
    }
    /* Configure the SysTick handler priority */
    NVIC_SetPriority(SysTick_IRQn, 0x0);                                        //SysTickÖжÏÓÅÏȼ¶ÉèÖÃ
}

/********************************************************************************************************
**º¯ÊýÐÅÏ¢ £ºSysTick_Handler(void)
**¹¦ÄÜÃèÊö £º½øÈë¸ÃÖжϺ¯Êýºó£¬Systick½øÐеݼõ
**ÊäÈë²ÎÊý £ºÎÞ
**Êä³ö²ÎÊý £ºÎÞ
********************************************************************************************************/
void SysTick_Handler(void)
{
    TimingDelay_Decrement();
}

/********************************************************************************************************
**º¯ÊýÐÅÏ¢ £ºTimingDelay_Decrement(void)
**¹¦ÄÜÃèÊö £ºÒÔ1msµÄËٶȵݼõ
**ÊäÈë²ÎÊý £ºpclk2£¬ÀýÈçϵͳʱÖÓΪ8MHz£¬²ÎÊýÓ¦´«Èë8
**Êä³ö²ÎÊý £ºÎÞ
********************************************************************************************************/
void TimingDelay_Decrement(void)
{
    if (TimingDelay != 0x00) {
        TimingDelay--;
    }
}

/********************************************************************************************************
**º¯ÊýÐÅÏ¢ £ºdelay_ms(__IO uint32_t nTime)
**¹¦ÄÜÃèÊö £º³ÌÐòÓ¦Óõ÷ÓÃÑÓʱ£¬Ê¹ÓÃsystick
**ÊäÈë²ÎÊý £ºnTime£ºÑÓʱ
**Êä³ö²ÎÊý £ºÎÞ
********************************************************************************************************/
void delay_ms(__IO uint32_t nTime)
{
    TimingDelay = nTime;

    while(TimingDelay != 0);
}

使用特权

评论回复
沙发
xyz549040622| | 2019-12-18 11:35 | 只看该作者
us级别的延时,只能用nop了吧?

使用特权

评论回复
板凳
heisexingqisi| | 2019-12-30 22:58 | 只看该作者
systick本来就是为定时秒使用的,us肯定不现实,你根据时钟频率算算几个NOP

使用特权

评论回复
地板
kkzz| | 2020-2-4 07:47 | 只看该作者
通过定时器对系统时钟进行分配计数  

使用特权

评论回复
5
hudi008| | 2020-2-4 07:48 | 只看该作者
通过循环运行一段代码指令吧  

使用特权

评论回复
6
lzmm| | 2020-2-4 07:48 | 只看该作者
系统时钟的准确性和稳定性

使用特权

评论回复
7
minzisc| | 2020-2-4 07:48 | 只看该作者
采用定时器来延时。  

使用特权

评论回复
8
selongli| | 2020-2-4 07:48 | 只看该作者
环语句延时多长时间。  

使用特权

评论回复
9
fentianyou| | 2020-2-4 07:49 | 只看该作者
要想精确必须用定时器,产生定时中断

使用特权

评论回复
10
xiaoyaodz| | 2020-2-4 07:49 | 只看该作者
具体精确延时程序,网上很多  

使用特权

评论回复
11
febgxu| | 2020-2-4 07:49 | 只看该作者
用延时函数就可以实现  

使用特权

评论回复
12
sdlls| | 2020-2-4 07:50 | 只看该作者
利用循环处理的方式实现的延时,并不精确。

使用特权

评论回复
13
pixhw| | 2020-2-4 07:50 | 只看该作者
通过执行指令来达到延时效果

使用特权

评论回复
14
minzisc| | 2020-2-4 07:50 | 只看该作者
用汇编语言来编制延时程序。  

使用特权

评论回复
15
lzmm| | 2020-2-4 07:50 | 只看该作者
直接让单片机做空循环   

使用特权

评论回复
16
selongli| | 2020-2-4 07:50 | 只看该作者
最简单的定时器中断程序  

使用特权

评论回复
17
hudi008| | 2020-2-4 07:50 | 只看该作者
计算和调节出所消耗的指令周期来得到符合要求的周期延时

使用特权

评论回复
18
fentianyou| | 2020-2-4 07:50 | 只看该作者
用汇编语言编写,每一步多少时间都可以计算

使用特权

评论回复
19
kkzz| | 2020-2-4 07:51 | 只看该作者
计数到产生一个中断  

使用特权

评论回复
20
xiaoyaodz| | 2020-2-4 07:51 | 只看该作者
接 进行 循环延时   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝