历史上的今天
今天是:2024年12月22日(星期日)
2021年12月22日 | STM32F429--系统滴答定时器
2021-12-22 来源:eefocus
系统滴答定时器:属于内核的定时器,用于控制整个系统的运行节拍,STM32F429是180MHZ的,STM32F103最高是72MHZ。此处主要是编写控制时钟进行延时的程序。
工作流程:利用systick定时器为递减计数器,设定初值并使能它后,它会每1个系统时钟周期计数器减,计数到 0时,SysTick计数器自动重装初值并继续计数,同时触发中断。只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息。
SystemInit() 这个函数可以让主频运行到180M,可以把它作为systick的时钟源。
计数方式:24bit向下递减的计数器
系统频率:180MHZ
实现功能:延时
主要寄存器:
SysTick->CTRL, --控制和状态寄存器
SysTick->LOAD, --重装载寄存器
SysTick->VAL, --当前值寄存器
SysTick->CALIB, --校准值寄存器
bsp_systick.c
#include "stm32f4xx.h"
void SysTick_Init(void);
void Delay_us(__IO u32 nTime);
static __IO u32 TimingDelay;
/*系统滴答定时器初始化 */
void SysTick_Init(void)
{
/* SystemFrequency / 1000 1ms中断一次
* SystemFrequency / 100000 10us中断一次
* SystemFrequency / 1000000 1us中断一次
*/
if (SysTick_Config(SystemCoreClock / 100000))
{
/* Capture error */
while (1);
}
}
//层级调用
// 180 000000 / 10 0000 =1800
//1800* 1/180 = 10us
//10us*10 0000 = 1000ms = 1s,即传入10 0000就是延时1S时间。
/**
* @brief us延时程序,10us为一个单位
* @param
* @arg nTime: Delay_us( 10 ) 则实现的延时为 10 * 10us = 100us
* @retval 无
*/
void Delay_us(__IO u32 nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);
}
/**
* @brief 获取节拍程序 *
*函数名称:TimingDelay_Decrement
*功能描述:中断里调用此函数,即没发生一次中断,此函数被调用,此函数里的变量
TimingDelay 相当于减法计数器
* @attention 在 SysTick 中断函数 SysTick_Handler()调用
*/
void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
在stm32f4xx_it.c系统中断函数调用TimingDelay_Decrement();
/* @brief This function handles SysTick Handler.*/
void SysTick_Handler(void)
{
TimingDelay_Decrement();
}
main.c,其他灯的初始化函数课参考之前的文章:
在实验设计部分的bsp_led.h
#include "stm32f4xx.h"
#include "bsp_led.h"
#include "bsp_systick.h"
/* @brief 主函数*/
int main(void)
{
/* LED 端口初始化 */
LED_GPIO_Config();
/*系统滴答定时器初始化*/
SysTick_Init();
/* 控制LED灯 */
while (1)
{
LED_RED;
Delay_us(100000);//1s延时
LED_GREEN;
Delay_us(100000);
LED_BLUE;
Delay_us(100000);
}
}
上一篇:STM32看门狗--窗口看门狗
史海拾趣
|
本人从事安防行业5年,一路走来,一直在做监控摄像机这一块,发现自己组装生产摄像机,有以下几大优势,供大家参考: 第一:摄像机本身组装很简单,技术含量不高,不如自己动手,还学会了组装,与摄像机内部结构。 第二:自己组装生产摄像机,价格 ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 自2009年年底起,3D在国内成为了“时尚”的代名词,继3D电影《阿凡达》、《爱丽丝梦游仙境》在中国市场赚得盆满钵满,3D似乎也成为了报刊企业的又一掘金点。 2010年4月16日,湖北《十堰晚 ...… 查看全部问答> |
|
先祝各位达人元旦快乐! 我老板现在想开发CDMA的通信模块,就是网上很多卖的那种,可以通过串口或其他通用接口进行CDMA无线通信,但我查了很长时间仍然没有头绪……望各位达人指点一二: 用于开发CDMA模块一般都有什么芯片?我看网上大部分都是高 ...… 查看全部问答> |
|
Powerpc现在编译的文件系统是jff2格式,用串口线先传倒powerpc的RAM里,再复制进flash,但是现在文件系统似乎限制了大小,如果传3M左右就能正常启动,如果大于4M就不能正常启动,系统会不停重启。但是如果系统能正常启动后,用FTP上传文件,则没有 ...… 查看全部问答> |
|
之前用的是vxworks+Tornado开发方式,一切比较顺利!! 最近单位买了最新版的vxworks,开发环境是workbench,刚接触,本打算先做启动软盘尝试启动vxworks,可发现每次编译后,目标机出现v1.6++++++++++++++++++然后又重起,尝试了各种方法,都是这样,请各位 ...… 查看全部问答> |
|
S3C44B0X那块板子,能在线调试并且LCD显示正常,但是将程序烧录进去后,却发现LCD没有显示了。这是怎么回事呢?有哪位大虾遇到过同样的问题吗? 做LED实验却不管在线调试还是将程序烧录进去,都能得到正确的结果。… 查看全部问答> |




