云计算百科
云计算领域专业知识百科平台

[STM32F103标准库]嵌入式模拟平台SYSTICK系统滴答定时器实验

本次实验用到嵌入式仿真教学实验平台:嵌入式仿真实验教学平台


SysTick简介

  SysTick属于CM3 内核中的一个外设,内嵌在NVIC中,是一个24bit的向下递减的计数器,计数器每计数一次的时间为1/SYSCLK。

  一般我们设置系统时钟SYSCLK等于72M,当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。

  因为SysTick 是属于CM3 内核的外设,所以所有基于CM3 内核的单片机都具有这个系统定时器,使得软件在CM3 单片机中可以很容易的移植。

  系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。

使用到的关键函数(标准库版本)

1.SysTick_Config()

(它会根据传入的参数设置 SysTick 的重载值(RELOAD 寄存器),当 SysTick 定时器从重载值递减到 0 时,就会触发一次 SysTick 中断,同时自动重装数值继续计数。)

中断周期的计算公式 = 重载值 / 系统核心时钟频率(SystemCoreClock)

函数原型为:

static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */

SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) – 1; /* 设置重装载寄存器的值 */
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) – 1); /* 设置 Cortex-M0 内核的系统中断设置优先级 */
SysTick->VAL = 0; /* 加载 SysTick 计数器数值 */
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk; /* 启动滴答定时器中断及滴答定时器*/
return (0); /* Function successful */
}

2.SysTick_Handler() 滴答定时器的中断服务函数

我们要实现的LED翻转功能就编写在这个函数当中。

准备工作就绪 我们开始 原神 启动!

模拟电路如图 我们的目的是使用滴答定时器实现 LED灯的重复点亮 熄灭 开始编写代码

主函数代码如下:

#include "sys.h"
#include "stm32f10x_conf.h"
#include "delay.h"
#include "led.h"
#include "system_stm32f10x.h"

int main(void)
{
SysTick_Config(SystemCoreClock/10);/*根据公式计算 滴答定时器
进入中断周期的时间为 100ms*/
LED_Init();
while(1)
{
}
}
void SysTick_Handler(void)
{
LED = !LED;//LED电平翻转
}

led.c以及.h代码如下

#include "stm32f10x.h"
#include "led.h"

// 初始化 PA12 用于控制 LED
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_12);

}

#ifndef __LED_H
#define __LED_H
#include "stm32f10x.h"

// LED 输出宏定义
#define LED PAout(12) // PA12

// 初始化 PA12 用于控制 LED
void LED_Init(void);

#endif

编译 运行 现象如图

赞(0)
未经允许不得转载:网硕互联帮助中心 » [STM32F103标准库]嵌入式模拟平台SYSTICK系统滴答定时器实验
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!