[技术问答] 关于M058LAN单片机的问题

[复制链接]
3465|22
 楼主| dongjie_0000 发表于 2014-4-20 11:52 | 显示全部楼层 |阅读模式
  M058单片机单独执行一步程序的时间是多少?
heelary 发表于 2014-4-20 11:55 | 显示全部楼层
汇编一步还是c语言一步?
 楼主| dongjie_0000 发表于 2014-4-20 12:02 | 显示全部楼层
heelary 发表于 2014-4-20 11:55
汇编一步还是c语言一步?

C语言
haolaishi 发表于 2014-4-20 12:15 | 显示全部楼层
c语言的话看你的反汇编语句
haolaishi 发表于 2014-4-20 12:16 | 显示全部楼层
假设晶振为12MhZ,一条指令的一个周期时间为1/12Mhz
heelary 发表于 2014-4-20 13:01 | 显示全部楼层
c语言一步的时间是不确定的,调用一个涵数也是一步,这个函数有多大你懂的,可以运行不停的都有。
 楼主| dongjie_0000 发表于 2014-4-20 14:23 | 显示全部楼层
本帖最后由 dongjie_0000 于 2014-4-20 14:33 编辑
heelary 发表于 2014-4-20 13:01
c语言一步的时间是不确定的,调用一个涵数也是一步,这个函数有多大你懂的,可以运行不停的都有。 ...

其实我就是想做一个精确延时1us的函数   在M051代码中,#include "M051.h"
void Delayus(uint32_t unCnt){
    SYST_RVR = unCnt*12;
          SYST_CVR = 0;
          SYST_CSR |=1UL<<0;
          
          while((SYST_CSR & 1UL<<16)==0);
}

但是#include "M051Series.h",该怎么移植呢

Regsen 发表于 2014-4-20 14:31 | 显示全部楼层
用M058的滴答中断来做好了
新唐的NUC系列都有。库里面直接包含头文件来使用就可以了。
 楼主| dongjie_0000 发表于 2014-4-20 14:49 | 显示全部楼层
本帖最后由 dongjie_0000 于 2014-4-20 14:50 编辑
Regsen 发表于 2014-4-20 14:31
用M058的滴答中断来做好了
新唐的NUC系列都有。库里面直接包含头文件来使用就可以了。 ...

能不能说的详细点?
haolaishi 发表于 2014-4-20 15:53 | 显示全部楼层
dongjie_0000 发表于 2014-4-20 14:49
能不能说的详细点?

你说的这个函数,在M058S中就有
haolaishi 发表于 2014-4-20 15:53 | 显示全部楼层
  1. static __INLINE void SYS_SysTickDelay(uint32_t us)
  2. {
  3.     SysTick->LOAD = us * CyclesPerUs;
  4.     SysTick->VAL  =  (0x00);
  5.     SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;

  6.     /* Waiting for down-count to zero */
  7.     while((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0);
  8. }
 楼主| dongjie_0000 发表于 2014-4-20 20:32 | 显示全部楼层
haolaishi 发表于 2014-4-20 15:53

头文件是哪个?
haolaishi 发表于 2014-4-20 20:33 | 显示全部楼层
SYS.h这个头文件中了
 楼主| dongjie_0000 发表于 2014-4-20 21:19 | 显示全部楼层
haolaishi 发表于 2014-4-20 20:33
SYS.h这个头文件中了

找到了,谢谢啊
 楼主| dongjie_0000 发表于 2014-4-20 22:01 | 显示全部楼层
dongjie_0000 发表于 2014-4-20 21:19
找到了,谢谢啊

SYS_SysTickDelay(uint32_t us)是不是只要填上所需要的时间就可以了。是不是很精确啊
haolaishi 发表于 2014-4-21 10:08 | 显示全部楼层
dongjie_0000 发表于 2014-4-20 22:01
SYS_SysTickDelay(uint32_t us)是不是只要填上所需要的时间就可以了。是不是很精确啊 ...

填上时间即可,精确度还可以,需要更精确的话就得用RTC了,M058S貌似没有RTC
从小木丁丁 发表于 2014-4-21 10:44 来自手机 | 显示全部楼层
haolaishi 发表于 2014-4-21 10:08
填上时间即可,精确度还可以,需要更精确的话就得用RTC了,M058S貌似没有RTC ...

rtc都没有?
 楼主| dongjie_0000 发表于 2014-4-21 12:12 | 显示全部楼层
从小木丁丁 发表于 2014-4-21 10:44
rtc都没有?

RTC有的
从小木丁丁 发表于 2014-4-21 15:03 来自手机 | 显示全部楼层
c语言一步的时间是不确定的,调用一个涵数也是一步,这个函数有多大你懂的,可以运行不停的都有。
从小木丁丁 发表于 2014-4-21 15:03 来自手机 | 显示全部楼层
haolaishi 发表于 2014-4-20 12:16
假设晶振为12MhZ,一条指令的一个周期时间为1/12Mhz

一个指令周期。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

43

帖子

0

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