请选择 进入手机版 | 继续访问电脑版

迪文科技论坛

 找回密码
 立即注册
搜索
热搜: T5L 视频屏 DGUS OS
查看: 677|回复: 1

毫秒级Sleep函数

[复制链接]

6

主题

33

帖子

109

积分

注册会员

Rank: 2

积分
109
发表于 2019-7-29 10:22:14 | 显示全部楼层 |阅读模式
本帖最后由 过期的健康证 于 2019-7-30 16:44 编辑

第三次修改,根据Mona的建议在保证准确的情况下增加了一点点延迟,可能不同CPU的效果不同,需要调试一下。j的初始值越大读取寄存器的间隔越大并且Sleep误差越大。

  1. // 延迟函数
  2. void delayms(unsigned int us)
  3. {
  4.         unsigned int i,j;
  5.                 for(i=us;i>0;i--);  
  6.                         for(j=10;j>0;j--);
  7. }
  8.                
  9. // 延迟函数
  10. void sleep(unsigned int millisecond)
  11. {
  12.         char data;
  13.          
  14.         while(millisecond > 0){        
  15.                 data = 0;
  16.                 write_register(37,&data);
  17.                
  18.                 while(1){
  19.                         read_register(37,&data);
  20.                         delayms(10);
  21.                         if (data > 0)
  22.                                 break;
  23.                 }
  24.                 millisecond--;
  25.         }
  26. }

  27. int main()
  28. {
  29.         timer_config(2,1);
复制代码







回复

使用道具 举报

26

主题

102

帖子

787

积分

版主

Rank: 7Rank: 7Rank: 7

积分
787
发表于 2019-7-30 13:55:29 | 显示全部楼层
会有问题,可能会导致触摸屏卡顿。建议在这句后面加个100us的延时。
timer_config(2,1);
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2021-1-18 00:00 , Processed in 0.024530 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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