STM32F1_SysTick系统滴答

发布者:国宝集团最新更新时间:2017-09-15 来源: eefocus关键字:STM32F1  SysTick  系统滴答 手机看文章 扫描二维码
随时随地手机看文章

前言

今天讲解“STM32F103 SysTick系统滴答”,“SysTick系统滴答”是属于Cortex-M3内核的一部分,主要是为运行的操作系统提供滴答时钟,如常见的操作系统:uCOS、RTOS等。不管M3芯片属于哪一家公司,它都标配有SysTick这一部分。因此,它属于芯片内核的一部分,主要是为了方便操作系统的移植。

其实,SysTick能实现的功能,都可以由TIM来实现。SysTick无非就是定时中断的功能,它完全可以由TIM定时器来完成。之所以SysTick独立出来就是因为它属于内核一部分,方便用户移植,而且简单方便。学过uCOS的人都知道,以前在51,或者430上面是由定时器完成的时钟滴答,到后面ARM公司就用到了一个好的办法,就是在内核中标配一个SysTick,这样下来移植系统不用那么麻烦了。

SysTick除了在操作系统中起到作用,其实在裸机程序中也起到很大作用,比如:定期处理一段程序、超时定时、串口接收超时等,今天就以“定期处理一段程序”为例来说一下。

说到操作系统,后期我也会花一定时间讲解一下uCOS操作系统,感兴趣的朋友可以关注一下。


本文特点:1.提供讲解的软件工程; 2.重点代码截图,配讲解。

本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,并将文章分享给你的朋友。

 

下载

提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。

 

今天的软件工程下载地址(360云盘):

https://yunpan.cn/cSVIp4UeSpA9B  访问密码 f486

 

STM32F10x的资料可以在我360云盘下载:

https://yunpan.cn/crBUdUGdYKam2   访问密码 ca90

 

内容讲解

工程概要说明: 系统上电初始化完成,配置SysTick,1秒滴答(中断)10次,执行的一段程序就是“变化LED”,运行该程序就可以看到定义的LED不在1秒钟闪烁10次。

关于“STM32F103  SysTick系统滴答” 我把重要的几点在下面分别讲述:

一、配置并初始化SysTick


该函数位于main.c文件下面;

上图中红色箭头处10代表的意思就是:一秒钟滴答(中断)10次,可自行修改这个值。用于系统,我们一般在100 --- 1000之间,也就是要滴答100 --- 1000次。

获取系统时钟,正常情况下,我们这里的RCC_ClocksStructure.SYSCLK_Frequency应该和SystemCoreClock一样,最好像上面程序中直接获取系统时钟,原因很简单,有可能SystemCoreClock与实际的不一样。

 

二、SysTick_Config函数详情


该函数位于core_cm3.c文件下面;

这个函数是芯片标志的函数接口,我大概讲解一下吧,设置重载值,设置中断优先级,配置并初始化SysTick。

 

三、SysTick中断

 

该函数位于stm32f10x_it.c文件下面;

处理的程序就变化LED,也就是注释的语句。

 

四、SysTick寄存器

有4个寄存器控制SysTick定时器,在STM32参考手册中没有提到,位于“Cortex-M3权威指南Cn”中,在我提供的“STM32F10x的资料”中下载。


 

 

说明

今天提供的软件工程基于STM32F103大容量芯片,其实只要适当修改工程的部分配置,STM32F1的芯片都适用。


关键字:STM32F1  SysTick  系统滴答 引用地址:STM32F1_SysTick系统滴答

上一篇:STM32_TIM输出PWM波形
下一篇:STM32F1_WDG看门狗(独立+窗口)

推荐阅读最新更新时间:2024-03-16 15:37

STM32 系统时钟和SysTick定时器
1.STM32的时钟系统 在STM32中,一共有5个时钟源,分别是HSI、HSE、LSI、LSE、PLL (1)HSI是高速内部时钟,RC振荡器,频率为8MHz; (2)HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围是4MHz – 16MHz; (3)LSI是低速内部时钟,RC振荡器,频率为40KHz; (4)LSE是低速外部时钟,接频率为32.768KHz的石英晶体; (5)PLL为锁相环倍频输出,严格的来说并不算一个独立的时钟源,PLL的输入可以接HSI/2、HSE或者HSE/2。倍频可选择为2 – 16倍,但是其输出频率最大不得超过72MHz。 其中,40kHz的LSI供独
[单片机]
STM32学习—systick系统定时器
SysTick定时器配置步骤 SysTick定时器的操作可以分为 4 步: (1)设置SysTick定时器的时钟源。 (2)设置SysTick定时器的重装初始值(如果要使用中断的话,就将中 断使能打开)。 (3)清零SysTick定时器当前计数器的值。 (4)打开SysTick定时器。 SysTick_Init()函数: void SysTick_Init(u8 SYSCLK) //SYSCLK默认系统时钟是72M { SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //对系统是进行8分频 fac_us=SYSCLK/8; //1 us所需要的次数 fac
[单片机]
STM32F1笔记(五)外部中断EXTI
STM32的每个IO都可以作为外部中断的中断输入口。 STM32F103的中断控制器支持19个外部中断/事件请求。每个中断设有状态为,每个中断/事件都有独立的触发和屏蔽设置。 STM32F103的19个外部中断为: EXTI线0~15:对应外部IO口的输入中断。 EXTI线16:连接到PVD输出。(Programmable Votage Detector 可编程电压监测器。连到EXTI的电源电压检测(PVD)中断) EXTI线17:连接到RTC闹钟事件。 EXTI线18:连接到USB唤醒事件。 STM32供IO口使用的中断线只有16个,而STM32的IO口远超16个。 所以STM32的GPIOx.0
[单片机]
<font color='red'>STM32F1</font>笔记(五)外部中断EXTI
stm32F1 DMA
DMA,全称是Direct Memory Access,中文意思为直接存储器访问 DMA可用于实现外设与存储器之间或者存储器与存储器之间数据传输的高效性 DMA请求映像 各通道的DMA1请求: 各通道的DMA2请求: DMA配置步骤 1.使能DMA控制器时钟 2.初始化DMA通道,DMA_InitTypeDef 3.使能外设DMA功能 4.开启DMA的通道 5.查询DMA传输状态 举例 u8 txBuffer = {0}; u8 rxBuffer = {0}; void DMA_send(u32 num) { DMA_Cmd(DMA1_Channel4, DISABLE); DMA_SetCur
[单片机]
<font color='red'>stm32F1</font> DMA
STM32F1_外部SRAM作为运行内存
前言 今天总结“STM32F103 外部SRAM作为运行内存”。对于运行内存应该都知道它的意思,主要是程序运行时所使用的RAM,比如我们定义的全局变量、局部变量这些在程序运行时都会在RAM中为它们开辟一片空间,用于运行时所使用。 今天提供的工程是基于前面“TIM延时”的工程修改而来,但是今天的例子是使用ST官方提供的标准库 里面“system_stm32f10x.c”文件里面现成的函数接口(使用寄存器配置) ,使其控制外部SRAM作为运行内存。昨天的工程使用标准库fsmc相应的函数接口来配置的FSMC,昨天工程的目的就是为了使其大家熟悉参数信息。因此,今天单独再提供一个工程”FSMC读写外部SRAM_官方配置”(就是用寄存器配置
[单片机]
STM32F1_外部SRAM作为运行内存
STM32CubeMX + STM32F1系列开发时遇到的四个问题及解决
这四个问题是我在使用STM32F103C8T6 + STM32CubeMX做项目时遇到的,给大家分享一下,以下四个问题重要程度依次降低,分别是: ① 调试选项问题(默认会造成下载器无法下载); ② 定时器设置占空比的函数找不到报错的问题; ③ 硬件iic的一个小bug(亲测oled可以正常显示); ④ 串口寄存器与其它系列不一样的问题; 1. 调试选项问题 1.1. 问题描述 使用STM32CubeMX生成的 STM32F1 工程,在使用 CMSIS-DAP 下载器下载一次之后,造成无法下载的问题,如图,下载器可以检测到,但是下载器无法连接芯片: 直接下载当然一定也会出问题了,如图: 1.2. 问题原因分析
[单片机]
STM32CubeMX + <font color='red'>STM32F1</font>系列开发时遇到的四个问题及解决
STM32 SysTick秒用
这里针对的是无操作系统的情况下的使用。之前一直想利用systick既实现记录系统运行时间又能够精确实现微秒延时的功能,如果将SysTick的定时器的定时中断时间设置为1us,这在有些情况下会导致死机的问题。这样的话就无法利用systick来实现us延时函数了。 利用SysTick实现1ms定时中断,us延时函数可以利用SysTick的寄存器来运算得到精确的延时函数,具体实现如下: 头文件: #ifndef __SYSTICK_H #define __SYSTICK_H #ifdef __cplusplus extern C { #endif /* Includes -----------------------
[单片机]
SPI通信协议—STM32f1学习笔记
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,分别为: 1.MISO,主机数据输入从机数据输出线(“M”表示主机master,“I”表示输入in,“S”表示从机slaver,“O”表示输出out。) 2.MOSI,主机数据输出从机数据输入(同上,顺序不同而已) 3.CS,片选信号,该引脚为高的为主机,引脚低的为从机。单片机以此判断主从机。 4.SCLK。时钟线,由主机提供时钟。 主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。 SPI工作原理: 主机和从机都有一个串行移位寄存器,主机通过想它的SPI串行寄存器写入一个字节来发起一次传输。 主
[单片机]
SPI通信协议—<font color='red'>STM32f1</font>学习笔记
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved