[MM32软件] 新人想问下mm32f031怎么做到us的延时

[复制链接]
517|24
 楼主 | 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);
}

使用特权

评论回复
| 2019-12-18 11:35 | 显示全部楼层
us级别的延时,只能用nop了吧?

使用特权

评论回复
| 2019-12-30 22:58 | 显示全部楼层
systick本来就是为定时秒使用的,us肯定不现实,你根据时钟频率算算几个NOP

使用特权

评论回复
| 2020-2-4 07:47 | 显示全部楼层
通过定时器对系统时钟进行分配计数  

使用特权

评论回复
| 2020-2-4 07:48 | 显示全部楼层
通过循环运行一段代码指令吧  

使用特权

评论回复
| 2020-2-4 07:48 | 显示全部楼层
系统时钟的准确性和稳定性

使用特权

评论回复
| 2020-2-4 07:48 | 显示全部楼层
采用定时器来延时。  

使用特权

评论回复
| 2020-2-4 07:48 | 显示全部楼层
环语句延时多长时间。  

使用特权

评论回复
| 2020-2-4 07:49 | 显示全部楼层
要想精确必须用定时器,产生定时中断

使用特权

评论回复
| 2020-2-4 07:49 | 显示全部楼层
具体精确延时程序,网上很多  

使用特权

评论回复
| 2020-2-4 07:49 | 显示全部楼层
用延时函数就可以实现  

使用特权

评论回复
| 2020-2-4 07:50 | 显示全部楼层
利用循环处理的方式实现的延时,并不精确。

使用特权

评论回复
| 2020-2-4 07:50 | 显示全部楼层
通过执行指令来达到延时效果

使用特权

评论回复
| 2020-2-4 07:50 | 显示全部楼层
用汇编语言来编制延时程序。  

使用特权

评论回复
| 2020-2-4 07:50 | 显示全部楼层
直接让单片机做空循环   

使用特权

评论回复
| 2020-2-4 07:50 | 显示全部楼层
最简单的定时器中断程序  

使用特权

评论回复
| 2020-2-4 07:50 | 显示全部楼层
计算和调节出所消耗的指令周期来得到符合要求的周期延时

使用特权

评论回复
| 2020-2-4 07:50 | 显示全部楼层
用汇编语言编写,每一步多少时间都可以计算

使用特权

评论回复
| 2020-2-4 07:51 | 显示全部楼层
计数到产生一个中断  

使用特权

评论回复
| 2020-2-4 07:51 | 显示全部楼层
接 进行 循环延时   

使用特权

评论回复
扫描二维码,随时随地手机跟帖
*滑动验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表