嵌入式仿真实验教学平台——基于SysTick中断的LED闪烁实验

之前介绍了一款国内的嵌入式仿真平台,嵌入式入门学习新途径——嵌入式仿真实验教学平台_同予的博客-CSDN博客,有朋友私信问我一些具体的细节问题,所以接下来我会运行平台上的一些实验,来展示平台的功能。

这次的实验是 基于SysTick中断的LED闪烁实验。

SysTick即系统定时器又名系统嘀嗒定时器,是一个 24 位的倒计数定时器,当计数到 0 时,将从 RELOAD 寄存器中自动重装载定时初值,开始新一轮计数。

Systick 的信号来源于系统时钟,不分频为 72MHz,8 分频为 9MHz。

这个定时器上学时很少会使用,但在工作中却经常可以发挥作用,原因是该计时器拥有独立的中断,很多效果都能使用系统定时器来实现,这也是选择介绍这个实验的原因。

此实验旨在通过系统定时器中断来控制LED灯的亮灭。

电路的搭建非常简单,仅仅需要外接一枚LED到STM32即可,重点我们来看代码部分。

Systick需要先完成初始化,我们可以直接利用STD库函数SysTick_Config()来实现,使用代码跳转可以查看该函数的定义。

函数SysTick_Config()的参数是单片机的频率,在STD库中有专门的宏定义来表示不同型号单片机的频率,我们使用的STM32F1频率为72MHz。

初始化好Systick以后,就可以开始编写中断服务函数,定时器每次计时结束后,都会进入中断 。

我们想要实现的效果很简单,每次进入中断时,反转一次LED状态即可。

接下来就是编译并运行仿真。

我们在中断函数内设置断点,运行仿真,程序不断进入中断,LED灯亮灭闪烁。

好了,这就是实验的全部内容了,希望对各位有所帮助。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是一个简单的嵌入式实时操作系统时钟中断实验的示例代码,供参考: ``` #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include "RTOS.h" // 定义任务栈大小 #define TASK_STACK_SIZE 1024 // 定义任务函数 void task1(void); void task2(void); // 定义任务堆栈空间 static uint8_t task1_stack[TASK_STACK_SIZE]; static uint8_t task2_stack[TASK_STACK_SIZE]; // 初始化时钟中断 void SysTick_Init(void) { // 设置时钟中断触发时间 SysTick_Config(SystemCoreClock / 1000); // 每 1ms 触发一次中断 } // 时钟中断处理函数 void SysTick_Handler(void) { // 切换任务 OS_Schedule(); } int main(void) { // 初始化时钟中断 SysTick_Init(); // 创建任务 OS_Task_Create(task1, task1_stack, sizeof(task1_stack)); OS_Task_Create(task2, task2_stack, sizeof(task2_stack)); // 启动调度器 OS_Start(); return 0; } void task1(void) { while (1) { printf("Task1 is running!\n"); OS_Delay(1000); // 延时 1s } } void task2(void) { while (1) { printf("Task2 is running!\n"); OS_Delay(500); // 延时 500ms } } ``` 该示例代码中,定义了两个任务 `task1` 和 `task2`,并分别在不同时间间隔内输出不同的字符串。通过调用 `SysTick_Init` 函数初始化时钟中断,并在 `SysTick_Handler` 函数中切换任务。在 `main` 函数中,创建了两个任务,并启动调度器。在任务函数中,通过 `OS_Delay` 函数实现了延时操作,以实现任务间的时间交替执行。 需要注意的是,该示例代码仅供参考,具体实现需要根据具体的硬件平台和操作系统进行相应的修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值