stm32的SysTick外设介绍——学习笔记

简介:

SysTick即系统定时器是一个内核外设,而不是片上外设,寄存器手册说明需要查看《Cortex-M3编程手册》,具体是哪一款内核就查哪一款内核的手册,我用的stm32f103所以我查的Cortex-M3。

其实就是个24位递减计数器,计一个数时间是1/SYSCLK,stm32f103里面SYSCLK=72MHZ,

所以其计数周期是1/72*10^6s = 1/72us。(1s = 10^6us),当从初值递减到0时会产生一个中断,NVIC捕获到这个中断后,就开始执行中断服务函数SysTick_Handler(已经在startup_stm32f10x_hs.s中注册。

一、初始化SysTick

在core_cm3.h中有static __INLINE uint32_t SysTick_Config(uint32_t ticks)这个函数,这个函数初始化了SysTick的寄存器,计一个数的周期为1/SYSCLK,而SYSCLK=72MHZ,所以我们传入ticks = 72时,即1us产生一次SysTick中断。ticks = 72000时,即1ms产生一次SysTick中断。

二、点灯实验

用SysTick定时器定时1ms,然后以1s的时间间隔让LED1灯闪烁。本次平台为野火指南者开发板。LED1接PB0,低电平点亮。

cpp 复制代码
#include "stm32f10x.h" 
#include"core_cm3.h"

int g_systick = 0;
void 	__Systick_init(void);
void LED_GPIO_Config(void);

int main(void)
{	

	LED_GPIO_Config();//LED1连接的是PB0
	__Systick_init();//初始化systick,1ms产生一次中断
    
	 GPIOB->ODR = 0xfffffffe;//直接操作GPIO的输出数据寄存器控制PB0输出低电平。
    
	 while(1)
	 {
			if(g_systick == 1000)//定时1s,g_systick在SysTick_Handler中,来一次中断g_systick加1
			{
					g_systick = 0;

					GPIOB->ODR ^= GPIO_Pin_0;//通过异或将PB0的电平反转一次
			}
	 }

	return 0;

}

//1.初始化PB0为推挽输出模式
void LED_GPIO_Config(void)
{
	GPIO_InitTypeDef  GPIO_InitStruct;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	
	GPIO_Init(GPIOB, &GPIO_InitStruct);	
}

//2.定时1ms
void 	__Systick_init(void)
{
		SysTick_Config(72000);//Systick定时1ms,即1ms产生一次Systick中断

}

//3.systick的中断服务函数,已经在startup_stmf10x_hs.s中定义好
void SysTick_Handler(void)
{
		g_systick++;

}
相关推荐
序属秋秋秋44 分钟前
《C++初阶之内存管理》【内存分布 + operator new/delete + 定位new】
开发语言·c++·笔记·学习
许白掰1 小时前
Linux入门篇学习——Linux 工具之 make 工具和 makefile 文件
linux·运维·服务器·前端·学习·编辑器
B1nna2 小时前
Docker学习
学习·docker·容器
quant_19863 小时前
R语言如何接入实时行情接口
开发语言·经验分享·笔记·python·websocket·金融·r语言
promising-w8 小时前
【运算放大器专题】基础篇
嵌入式硬件·学习
宝山哥哥8 小时前
网络信息安全学习笔记1----------网络信息安全概述
网络·笔记·学习·安全·网络安全
前端开发与ui设计的老司机8 小时前
从UI设计到数字孪生实战:构建智慧教育的个性化学习平台
学习·ui
X Y O8 小时前
神经网络初步学习3——数据与损失
人工智能·神经网络·学习
源远流长jerry8 小时前
STM32F103ZET6按键中断控制灯
stm32·单片机·嵌入式硬件
逼子格9 小时前
逻辑门电路Multisim电路仿真汇总——硬件工程师笔记
笔记·硬件工程师·multisim·电路仿真·逻辑门·硬件工程师学习·电路图