实验内容:配置嘀嗒定时器,产生0.01毫秒的中断,结合中断函数,使LED灯每隔0.25毫秒闪烁一次。
实验目的:熟悉滴答定时器的配置与应用。简单了解一下STM32的时钟结构。
简单介绍:
SysTick定时器被捆绑在NVIC中,用于产生SysTick异常,Cortex-M3在内核部分 包含了一个简单的定时器——SysTick timer。该定时器的时钟源可以是内部时钟(FCLK,CM3上的自由运行时钟),或者是外部时钟( CM3处理器上的STCLK信号)。不过,STCLK的具体来源则由芯片设计者决定,因此不同产品之间的时钟频率可能会大不相同。因此,需要阅读芯片的使用手册来确定选择什么作为时钟源。
在STM32中SysTick 以 HCLK(AHB时钟)或HCLK/8 作为运行时钟。此函数中8分频。
SysTick是一个24位的向下计数定时器。
SysTick_Init() 这个函数,它是由用户在SysTick.c这个文件中实现的,其功能是启动系统滴答定时器SysTick,对嘀嗒定时器进行应用时只需要调用函数SysTick_Config()就可以了,此后SysTick定时器就被开启了。
SysTick_Config()函数,它是属于内核层的Cortex-M3通用函数,位于core_cm3.h文件中。具体配置请参考野火的相关技术文档。
相关代码:
main.c 代码
#include "stm32f10x.h"
#include "gpioledinit.h"
#include "systick.h"
//因为在启动文件中加载了系统时钟配置函数,故此处不再配置时钟
int main(void)
{
Gpio_Led_Init();
SysTick_Init();
while (1);
}
systick.c代码
#include "stm32f10x.h"
unsigned char sys_nub;
void SysTick_Init(void)
{
if (SysTick_Config(90000)) //0.01s 中断一次
{
while (1);
}
}
gpioledinit.c代码
#include "stm32f10x.h"
void Gpio_Led_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOF,&GPIO_InitStructure);
GPIO_SetBits(GPIOF,GPIO_Pin_6 | GPIO_Pin_7 |GPIO_Pin_9 |GPIO_Pin_10 );
}
STM32F10x_it.c中断处理函数代码
void SysTick_Handler(void)
{
sys_nub++;
if(sys_nub==25)
{
GPIO_SetBits(GPIOF,GPIO_Pin_9); //LED1
}
if(sys_nub>49)
{
sys_nub=0;
GPIO_ResetBits(GPIOF,GPIO_Pin_9); //LED1
}
}
STM32学习笔记(Systick)
关键词: STM32 学习 笔记 Systick 时钟 Sy
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 |