【蓝桥杯嵌入式(一)程序框架和调度器】

2024-09-07 06:04

本文主要是介绍【蓝桥杯嵌入式(一)程序框架和调度器】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

蓝桥杯嵌入式(一)程序框架和调度器

  • 序、代码命名规则
  • 零、STM32和8051
  • ⼀、软件及环境安装
  • ⼆、⼯程框架搭建
    • 1.时钟配置
    • 2、SYS配置
    • 3、⼯程配置
    • 4、NVIC配置
    • 5.、Keil配置
  • 三、系统初始化
  • 四、任务调度器

链接: 视频出处

序、代码命名规则

在这里插入图片描述在这里插入图片描述在这里插入图片描述
以下是一些常见的举例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

零、STM32和8051

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
链接: 8位和32位单片机最本质区别

⼀、软件及环境安装

链接: 安装过程
别忘了这个在这里插入图片描述

⼆、⼯程框架搭建

1.时钟配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、SYS配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一般要配置,不然芯片可能烧了一次烧不进去了。
蓝桥杯这里可以不选,有自带的下载器接口,用了一个DAP去下载,不需要配置调试器。

3、⼯程配置

在这里插入图片描述
选1.4.0,比赛要求用这个版本
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、NVIC配置

在这里插入图片描述
把滴答定时器配置成最高优先级
在这里插入图片描述
在这里插入图片描述

5.、Keil配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
后续命名有所不同,APP即为MyAPP
在这里插入图片描述

三、系统初始化

在这里插入图片描述
钥匙是PD2,地址是PC
PC0到PC7不变,PC8到PC15变
在这里插入图片描述
前两句是准备数据,后面是锁存器打开,锁存器关闭。上面代码有误,纠正一下。

void system_init(void){//清除 GPIOC 高 8 位的输出数据寄存器,保留低 8 位GPIOC->ODR &= 0x00ff;//将 GPIOC 高 8 位的输出数据寄存器设为高电平,接VCC为1熄灭GPIOC->ODR |= 0xFF00;//置位 GPIOD 的第 2 位GPIOD->BSRR |= 0x01<<2;//复位 GPIOD 的第 2 位GPIOD->BRR  |= 0x01<<2;}

四、任务调度器

在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
链接: 从计算机底层认识指针!深⼊理解C语⾔指针!
在这里插入图片描述
以下是scheduler.c里的内容示例

#include "scheduler.h"typedef struct{void(*task_func)(void);uint32_t rate_ms; uint32_t last_run;
}task_t;uint8_t task_num;void led_proc()
{}static task_t scheduler_task[] = 
{{led_proc,1,0}
};
//初始化函数
void scheduler_init()
{task_num = sizeof(scheduler_task)/sizeof(task_t);
}
//调度器函数
void scheduler_run()
{for(uint8_t i = 0; i < task_num; i++){uint32_t now_time = HAL_GetTick();if(now_time>=scheduler_task[i].rate_ms+scheduler_task[i].last_run){scheduler_task [i].last_run = now_time;scheduler_task[i].task_func();}}
}

在这里插入图片描述
在main.c里的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
具体框架见链接: 视频出处

这篇关于【蓝桥杯嵌入式(一)程序框架和调度器】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144263

相关文章

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF