使用STM32的systick定时器中断实现RTC工作过程出错

开发环境:keil MDK V5.10

操作系统:windows 7(32位)

目标硬件:STM32F103C8

问题描述:使用STM32的systick定时器实现RTC功能。具体方法为systick滴答计时器配置为1ms时间间隔的滴答中断,定义一个RTC结构体,包含年、月、日、时、分、秒。在每进一次systick中断服务程序中更新一次RTC的值。主程序通过不停地获取RTC的时钟,每一秒钟使用printf函数输出当前的时间。测试过程发现绝大多数时间系统正常工作,但依然存在部分情况系统无法进行正常的输出。相关代码和测试结果如下:

/**
  * @brief  系统滴答定时器中断服务程序,主要功能为更新实时时钟
  *         
  * @note   无
  * @param  无
  * @retval 无
  */
void systick_isr(void)
{
  systick.tick_num++;
  rtc.ms++;
  rtc_update(&rtc);  
}

/**
  * @brief  获取系统实时时钟
  *         
  * @note   无
  * @param  用于存放当前系统实时时钟数据的结构体的指针
  * @retval 无
  */
void get_rtc(time_t *ptime)
{	
	*ptime = rtc;
}

时钟测试程序片段

	while(1)
	{
		get_rtc(&tprtc);
		if(j != tprt
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值