51822代码篇3
来源:互联网 发布:网络使用公约 编辑:程序博客网 时间:2024/05/16 13:45
51822的用户函数全部注册在timer里面执行,分别用到下面的两个函数注册和开始一个定时器任务。
uint32_t app_timer_create(app_timer_id_t * p_timer_id,
app_timer_mode_t mode,
app_timer_timeout_handler_t timeout_handler)
uint32_t app_timer_start(app_timer_id_t timer_id, uint32_t timeout_ticks, void * p_context)
在开始定时器任务的时候,有一个轮询的时间,51822用到一个调度函数,每次调度都会将所有
任务按照任务期望的时间(即还有多久任务就要执行了)排列。
我们能用到的大概就是creat , start ,stop这几个函数就可以了。
51822的调度函数,每次在创建新的任务,rtc中断时会被执行,调度函数timer_list_handler_sched()
获取计时器的tick值,判断是否有任务插入删除,根据任务期望值调整顺序等。程序太长就不说了。
下面有些程序技巧
1. 任务链接成链表,按照期望值排序。
2. 任务已开始参数查询按照循环队列查询。
3.#define CEIL_DIV(A, B) \
/*lint -save -e573 */ \
((((A) - 1) / (B)) + 1) \ 先-1在除,然后再+1,省去if判断。
4.((p_timer->ticks_at_start - m_ticks_latest) & MAX_RTC_COUNTER_VAL)
<
(MAX_RTC_COUNTER_VAL / 2)
两数相减,结果最高位为1,代表负数,省去判断。
5. 声明指针P,将P赋值一个数组地址,P[1]即可代表数组1。
6.活用函数指针,保证程序良好的结构。
- 51822代码篇3
- 51822代码篇1
- 51822代码篇2
- 51822代码篇4
- 代码3
- 归纳整理--第3篇--代码仓库
- 第十七篇:计算代码行数练习代码
- Gerrit使用篇-提交代码,合并代码
- 新手C#代码简洁性—代码篇
- 2015061506 - 代码分析之代码格式(3)
- 16-3-3代码
- Duwamish代码分析篇
- Duwamish代码分析篇
- Duwamish -- 代码分析篇
- Duwamish代码分析篇
- Duwamish代码分析篇
- 代码优化篇
- java线程代码篇
- lua安装和简单测试
- C++作业2
- Redis-Sampler:深入了解你的Redis存储
- 3.Smarty3:基本语法
- hdu 2510 符号三角形【DFS+打表】
- 51822代码篇3
- 机器学习课堂笔记(三)
- 【java】获取properties配置文件信息工具类
- 关于在CentOS中使用gdb出现debuginfos调试信息
- oracle 时间格式化代码出错
- MFC中利用MSXML解析XML文档
- 求两点距离
- jQuery的儿子——jQuery mobile
- 入职培训感悟