一、functions for handling system time
clock_time_t clock_time(void);//return the current system time in clock ticks
unsigned long clock_seconds(void);//return the system time in seconds
void clock_set_seconds(unsigned long ec);//set the value of the platform seconds
这些函数都是platform dependent的,我们是在stm8中实现的。
#if USE_RTC_CLK
#if USE_LSE // 32768Hz
#define CLOCK_CONF_SECOND 1024
#else // 38000Hz
#define CLOCK_CONF_SECOND 1000
#endif
#else
#define CLOCK_CONF_SECOND 1024
#endif
typedef unsigned long clock_time_t;
/**
* A second, measured in system clock time.
*
* hideinitializer
*/
#ifdef CLOCK_CONF_SECOND
#define CLOCK_SECOND CLOCK_CONF_SECOND
#else
#define CLOCK_SECOND (clock_time_t)32
#endif
其中我们的clock_time_t是unsigned long型的,在stm8中unsigned long是32bit,最大数值是4294967295。
The number of clock ticks per second is specified with the constant CLOCK_SECOND.
CLOCK_SECOND 按1024来算,clock_time函数wrap around的时间是:
4294967295/1024/(60*60*24*365) = 0.133年
clock_seconds函数wrap aound的时间是:
4294967295/(60*60*24*365) = 136.2年
The system time starts from zero when the Contiki system starts.
二、functions for blocking the CPU
/**
* Wait for a given number of ticks.
* param t How many ticks.
*
*/
void clock_wait(clock_time_t t);
/**
* Delay a given number of microseconds.
* param dt How many microseconds to delay.
*
* note Interrupts could increase the delay by a variable amount.
*/
void clock_delay_usec(uint16_t dt);
These functions are normally only used in low-level drivers where it sometimes is necessary to wait a short time without giving up the control over the CPU.
The function clock_init() is called by the system during the boot-up procedure to initialize the clock module.
main函数:
int
main(void)
{
reset_sr = RST->SR;
RST->SR = 0xFF;
clock_init();
leds_init();
leds_on(LEDS_GREEN);
HALT_LED_ON();
rs232_init(RS232_PORT_0, USART_BAUD_9600, USART_PARITY_NONE);
node_id_restore();
node_init();
process_init();
process_start(&etimer_process, NULL);
ctimer_init();
略……
return 0;
}
三、Porting the Clock Module
The clock module is platform dependent and is implemented in the file clock.c. Since the clock module handles the system time, the clock module implementation usually also handles the notifications to the etimer library when it is time to check for expired event timers.
具体相关代码如下:
if(etimer_pending() && etimer_next_expiration_time() <= current_clock) {
etimer_request_poll();
}
上一篇:IAR FOR STM8S 错误 An error occurred while retrieving GDI features: gdi-error
下一篇:STM8S103内存详析
推荐阅读
史海拾趣
在电子废弃物处理成为全球关注焦点的背景下,“未来电子”积极倡导绿色生产和循环经济理念。公司投入大量资源研发环保型电子产品,并建立了完善的电子废弃物回收处理体系。通过技术创新和科学管理,“未来电子”实现了生产过程中的节能减排和废弃物的有效回收利用,赢得了社会各界的广泛赞誉。这一举措不仅提升了公司的社会形象,还为公司的可持续发展奠定了坚实基础。
Digitron公司成立于XXXX年,由一群热衷于电子技术的工程师和科学家创立。在成立初期,公司专注于开发高精度、高可靠性的温度数据记录器。这些设备在医药、冷链物流等领域得到了广泛应用,为Digitron公司赢得了良好的声誉。随着技术的不断进步,Digitron公司逐渐扩大了产品线,推出了更多适用于不同行业的数据记录器和传感器。
在电子行业中,产品质量是企业生存和发展的关键。Arctic Silicon Devices深知这一点,因此非常重视品质管理。公司建立了严格的质量管理体系,从原材料采购到产品生产、测试、包装等各个环节都进行严格把控。同时,公司还加强了对供应商的管理和评估,确保原材料的质量稳定可靠。这些措施使得Arctic Silicon Devices的产品在市场上赢得了良好的口碑和信誉。
为了满足不同客户的需求,Frequency Sources公司不断丰富产品线,推出了包括晶体振荡器、温补晶振、压控晶振等在内的多种频率源产品。同时,公司还加强了与上下游企业的合作,通过产业链整合实现了资源的优化配置和成本的降低。这种产品多样化和产业链整合的策略不仅提升了公司的综合竞争力,还为客户提供了更加全面和优质的解决方案。
随着技术实力的增强,HVPSI开始将目光投向国际市场。公司积极参与国际电子展会,与全球各地的客户建立联系,展示其高压电源解决方案的卓越性能。同时,HVPSI也加强了与跨国企业的合作,共同开发定制化的高压电源产品,满足特定行业的需求。这一系列举措极大地拓宽了公司的市场份额,使其在国际舞台上崭露头角。
1 引言 目前,市场上的电饭煲大部分采用机械式或者是采用固定功率的方式加热,能源利用率低,功能单一,难以满足人们日益增长的生活需求。因此,开发功能齐全,安全可靠的微电脑电饭煲是非常用必要的。电饭煲从机械式原理到现在的智能电饭煲,期间经历了 ...… 查看全部问答∨ |
|
设计资源 培训 开发板 精华推荐
- USB Type-C® 和 USB Power Delivery:专为扩展功率范围和电池供电型系统而设计
- 景昱医疗耿东:脑机接口DBS治疗技术已实现国产替代
- 首都医科大学王长明:针对癫痫的数字疗法已进入使用阶段
- 非常见问题解答第223期:如何在没有软启动方程的情况下测量和确定软启动时序?
- 兆易创新GD25/55全系列车规级SPI NOR Flash荣获ISO 26262 ASIL D功能安全认证证书
- 新型IsoVu™ 隔离电流探头:为电流测量带来全新维度
- 英飞凌推出简化电机控制开发的ModusToolbox™电机套件
- 意法半导体IO-Link执行器电路板为工业监控和设备厂商带来一站式参考设计
- Melexis采用无磁芯技术缩小电流感测装置尺寸
- 千丘智能侍淳博:用数字疗法,点亮“孤独症”儿童的光