OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

12
返回列表 发新帖
楼主: 正点原子

仿ALIENTEK STM32开发板,写的STM8S的延时函数(基于IAR),汇编精确延时.奉献给大家了.

[复制链接]

  离线 

2

主题

9

帖子

0

精华

新手上路

Rank: 1

积分
37
金钱
37
注册时间
2017-3-6
在线时间
5 小时
发表于 2017-3-6 15:30:40 | 显示全部楼层
回复 支持 反对

使用道具 举报

Super 该用户已被删除
发表于 2017-4-20 14:38:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

  离线 

27

主题

91

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2014-8-11
在线时间
3 小时
发表于 2017-7-17 11:39:16 | 显示全部楼层
本帖最后由 xinshou 于 2017-7-17 17:25 编辑

为了满足misra规范,我将代码改成了:
[C] 纯文本查看 复制代码
void  delay_ms(u16 nms)
{
         u8 t;

         if( nms > 65U )
         {
                  t = (u8)(nms/65U);          /* if nms=16640, then t=256, U8 max=255 */

                  t--;
                  while( t > 0U)
                  {
                          delay_us(65000);      /* U16 max= 65535 */
                          t--;
                  }

                  nms = nms%65U;
         }

         delay_us(nms*1000U);
}


不知道执行的延时的准确性 如何?

此外, 函数void delay_us(u16 nus)  的注释:
/*    延时nus
    延时时间=(fac_us*4+4)*nus*(T)
    其中,T为CPU运行频率(Mhz)的倒数,单位为us.
    ......

    这里的 “单位为us” 是指函数的参数的单位是微秒还是CPU的运行频率的倒数?

承蒙各位大神指教!

回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手上路

Rank: 1

积分
23
金钱
23
注册时间
2017-7-17
在线时间
3 小时
发表于 2017-7-17 11:48:47 | 显示全部楼层
太帅了  正好想用 不用TIM4了
回复 支持 反对

使用道具 举报

  离线 

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2015-11-28
在线时间
12 小时
发表于 2017-10-17 18:14:27 | 显示全部楼层
原子哥~ 有stvd的么?  没用过iar的
回复 支持 反对

使用道具 举报

  离线 

2

主题

7

帖子

0

精华

新手上路

Rank: 1

积分
39
金钱
39
注册时间
2014-8-6
在线时间
1 小时
发表于 2017-10-24 15:36:59 | 显示全部楼层
STM8S的系统文件(包括sys.c,delay.c和uart.c三个文件),可否提供下,楼主?email:iapyglide_2118@163.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-12-16 16:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */