systick定时器
文章目录
前言
这边记录systick相关知识点。
一、前期疑惑
在学习systick志气啊,其实对于systick还是一脸懵的。然后自己在想的过程中,就产生了几个疑问,下面表述一下。
1、systick是终内部中断?如果是的话,中断中要干什么,终端中怎么处理的,来实现定时的。
2、systick是怎么实现定时的?
3、systick延时是阻塞的吗?
4、systick用的是哪个时钟。外部还是内部,只能用HSE吗
5、systick真的可以叫定时器吗,是不是systick时钟啊?
6、阻塞延时while是要等一个寄存器置位吗?是囊额寄存器。主要进中断吗?如果要进中断,进中断要做什么。
二、解答
2.1 关于systick是阻塞的吗?
这个问题感觉变得复杂了起来。systick野火教程中是阻塞的。然后jd之前的代码是非阻塞的。但是我已经完全记不清楚jd非阻塞的代码是怎么写的了。好像是使用了if(getSystickCount() - count > 0)类似语句。
可是问题来了,getSystickCount()函数是从哪里获取计数值呢?
2.2 非阻塞
刚才看了下jd的代码,主要是看了下非阻塞的代码。他是在中断中对systickCount++。然后在裸机主循环loop中轮询获取systickCount的值。比如获取systickCount值的函数是getSystickCount()函数。
int startTick = 0;
if(getSystickCount() - startTick > delay_ms)
{
startTick = getSystickCount();
//控制led操作
//
}
三、软件编写
基本实现编码,未做整理。
其中MCO引脚没有输出信号,这边在排查这个问题。同时也没有处理好protues波形的波形时间,所以现在有点停滞。
今天还百度了MCO相关处理方法,这边记录一个帖子:STM32F103 关于 RCC 使用 HSE 和 HSI 配置系统时钟输出和 MCO 输出时钟信号(固件库详解)_stm32f103 时钟输出-CSDN博客
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。