STM32 进阶 定时器:1系统定时器 系统中断案例 LED闪烁

定时器:

功能从高到低:

TIM1和TIM8 高级控制定时器:输出能力更强,刹车控制、死区时间。

TIMx 通用定时器:可以输出PWM方波

TIM6和TIM7 基本定时器:只能计时

系统定时器

系统定时器(SysTick系统)是属于CM3内核,内嵌在NVIC中。

它可以通过快速执行可以让两个while循环函数同时执行(假的)

SysTick相关寄存器

Core peripherals 核心外设

STK_CTRL 控制和状态寄存器:

异常请求使能

时钟源选择

计数标志位

STK_LOAD 重装载寄存器

LOAD抄到VAL中 (不变)

STK_VAL 当前寄存器

VAL进行减1然后触发中断,然后继续LOAD搬到VAL中进行-1触发中断。(减1)

STK_CALIB 用来校准的(一般不用)

系统中断案例 LED闪烁

通过系统定时器的中断,每隔1s让LED1灯闪烁一次

首先systick定时器不够1s,所以只能自己建立一个外部的标志位,用来定时。

内核中断没有明确中断标志位,所以没有清零操作

core_cm3.h里面有初始化函数

SysTick_Config(72000);

systick.c

cs 复制代码
#include "systick.h"

void Systick_Init(void){
    // //1.时钟源选择72MHz
    // SysTick->CTRL |= SysTick_CTRL_CLKSOURCE_Msk;
    // //2.
    // SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk;
    // //3.因为重装载要发生多次需要写成n-1,如果只触发1次那么不需要-1
    // SysTick->LOAD = 72000-1;

    // SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; 

    // NVIC_SetPriorityGrouping(3);
    // NVIC_SetPriority(SysTick_IRQn,4);
    // // NVIC_SetPendingIRQ(SysTick_IRQn);


    SysTick_Config(72000);
}

uint16_t count = 0;
//向量从中断向量表中寻找
void SysTick_Handler (void){
    count ++;
    if (count == 1000){
        count = 0;
        LED_Toggle(LED1);
    }
}

systick.h

cs 复制代码
#ifndef __SYSTICK_H__
#define __SYSTICK_H__


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

void Systick_Init(void);

#endif /* __SYSTICK_H__ */

main.c

cs 复制代码
#include "usart1.h"
#include "string.h"
#include <stdio.h>
#include "m24c02.h"
#include "i2c.h"
#include "led.h"
#include "systick.h"
#include "tim6.h"
int main(void){
	Usart1_Init();
	LED_Init();
	Systick_Init();
	while (1)
	{
	}
		
}

Hal库操作

整个初始化逻辑在HAL_InitTick(TICK_INT_PRIORITY);

相关推荐
码农小韩36 分钟前
基于Linux的C++学习——动态数组容器vector
linux·c语言·开发语言·数据结构·c++·单片机·学习
匠在江湖1 小时前
裸机单片机任务调度器实现:基于规范分层(COM/APP/SRV/DRV)架构,(附 任务调度器 / 微秒延时函数 / 串口重定向 源码)
单片机·嵌入式硬件·架构
点灯小铭2 小时前
基于单片机的智能洗碗机控制系统设计
单片机·嵌入式硬件·毕业设计·课程设计
清风6666663 小时前
基于单片机的电加热炉智能温度与液位PID控制系统设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计·期末大作业
一路往蓝-Anbo3 小时前
第五篇:硬件接口的生死劫 —— GPIO 唤醒与测量陷阱
c语言·驱动开发·stm32·单片机·嵌入式硬件
逑之4 小时前
C语言笔记16:文件操作
c语言·笔记·单片机
2401_863326115 小时前
基于单片机智能光控路灯设计
单片机·嵌入式硬件
清风6666665 小时前
基于单片机的球类比赛专用计分与暂停管理系统设计
单片机·嵌入式硬件·毕业设计·课程设计
Y1rong6 小时前
STM32之时钟
stm32·单片机·嵌入式硬件
yuanmenghao6 小时前
自动驾驶中间件iceoryx - 同步与通知机制(二)
开发语言·单片机·中间件·自动驾驶·信息与通信