https://www.cnblogs.com/yangfengwu/p/11094009.html

定时器有两种,软件定时器和硬件定时器

软件定时器就是靠里面的任务延时实现的,,这样的定时器其实延时不准确

硬件定时器 就是硬件中断定时器,咱都学过单片机,中断的准确

先看软件定时器

具体大家看下面

所以第一步,定义一个定时器变量

可以看这个文件,咱就是用这个头文件

os_timer_t os_timer_one;//定义一个全局的定时器结构体变量

先看带参数的

void *XXX   就是说可以接收任意的指针变量

//定义一个定时器用的回调函数
void os_timer_one_function(void *parg)
{
printf("parg:%s\n", parg);//打印一下传过来的参数
GPIO_OUTPUT_SET(, -GPIO_INPUT_GET());//GPIO5输出 反转
}

os_timer_setfn(&os_timer_one,os_timer_one_function,"yang");//配置定时器          定时器结构体变量         回调函数                   传给回调函数的参数
os_timer_arm(&os_timer_one,,);//使能定时器 os_timer_one--定时器变量 500--500ms进一次 1--循环进去

下载进去

500ms亮   500ms灭

其实这个参数是

os_timer_setfn(&os_timer_one,os_timer_one_function,"yang");
这个时候传过去的,只传这一次,只不过,局部变量的值设置了是yang 后期进中断的时候都没有去设置这个参数

不带参数就不说了哈

大家自己测试,报不报错就看官方底层怎么写的了

现在看硬件中断定时器

然后...官方给了例子

咱就稍微改改回调函数里面的

程序挂了......不可以运行了,总是=重启

然后我把

程序又好了

我感觉这个定时器是us级的定时器

1000  才1ms

1ms进一次执行  printf    printf还没执行完  中断又到了     所以程序崩了

u32 cnt = ;
void hw_test_timer_cb(void)
{
cnt++;
if(cnt>)
{
cnt=;
printf("1111111111111:%s\n");//打印
}
}

忘了..我后面怎么加了个%s  忘了去掉了

https://www.cnblogs.com/yangfengwu/p/11100552.html

最新文章

  1. Mvc视图的那些事
  2. C++线程池
  3. Servlet Request的 getInputStream() getReader() getParameter()
  4. Python输出内容的三种方式:print输出 python脚本执行 linux直接执行
  5. jquery的extend和fn.extend的使用说明
  6. django - from django.db.models import F - class F
  7. vb6.0如何让窗体跟随鼠标运动
  8. Eclipse(非J2EE版本)配置Extjs环境以及安装部署Tomcat
  9. Java学习日记-1 设置Java环境变量等
  10. javascript中数组方法小计
  11. HDU 3037 Saving Beans(Lucas定理的直接应用)
  12. (转) Java RMI 框架(远程方法调用)
  13. galera断电后无法重建集群
  14. Python中模块之time&datetime的功能介绍
  15. java 运算符的优先级比较
  16. Python操纵Excel,数据库
  17. JavaSE基础知识(3)—流程控制结构
  18. java框架篇---struts之文件上传和下载
  19. 关于流媒体(m3u8)的下载与播放
  20. Linux 常见紧急情况处理方法

热门文章

  1. 使用Powershell实现自动化安装/卸载程序
  2. C# 计时程序运行时间
  3. SQL Server安装教程(超详细)
  4. P2801 教主的魔法 (线段树)
  5. kali安装结束重启黑屏?
  6. ifup/ifdown
  7. 实战FFmpeg + OpenGLES--iOS平台上视频解码和播放
  8. TF-IDF词频逆文档频率算法
  9. Scala快速入门 - 基础语法篇
  10. golang的channel实现