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

news2024/9/20 9:25:43

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

  • 序、代码命名规则
  • 零、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.coloradmin.cn/o/2112027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

树状数组记录

树状数组&#xff08;Fenwick Tree&#xff09;是一种用于维护数组前缀和的数据结构&#xff0c;支持高效的单点更新和区间查询操作。它的查询和更新时间复杂度为 O ( log ⁡ n ) O(\log n) O(logn)&#xff0c;适用于需要频繁更新和查询的场景。 树状数组的基本操作 单点更…

HCIA--实验五:静态路由综合实验

静态路由综合实验 一、实验内容&#xff1a; 1.需求/目的&#xff1a; 在ensp模拟器中使用四个路由器&#xff0c;并且在路由器上创建loopback接口&#xff0c;相当于连接了一台主机&#xff0c;通过配置静态路由的方式实现全网通。 二、实验过程 1.道具&#xff1a; 4个…

基于 AC 驱动的电容结构 GaN LED 模型开发和应用

随着芯片尺寸减小&#xff0c;微小尺寸GaN 基 Micro LED 显示面临着显示与驱动高密度集成的难题&#xff0c;传统直流&#xff08;DC&#xff09;驱动技术会导致结温上升&#xff0c;降低器件寿命。南京大学团队创新提出交流&#xff08;AC&#xff09;驱动的单电极 LED&#x…

flask-login 生成 cookie,session

flask-login 生成 cookie,session Flask-Login login_user() 显示来自 Set-Cookie 标头的加密 cookie # 模拟一个用户类 class User(UserMixin):def __init__(self, id):self.id idapp.route(/login) def login():# 模拟用户登录过程user User(1)login_user(user)from flask…

openconnect-gui for qt 避坑指南

构建mingw_32 的时候 cmake居然识别的是vc 一直改不了 &#xff0c;一直到卸载qt重装 编译release 模式tap-win 下载一直不成功 修改cmake文件&#xff08;手动下载下来&#xff09;

智慧农业-自动化如何塑造农业的未来

全球人口的增长和气候变化对农业生产的持续影响&#xff0c;传统农业面临非常大的考验。为了保证农业效率、减少资源浪费和应对环境破坏&#xff0c;智能农业&#xff08;Smart Agriculture&#xff09;已成为未来农业发展的关键趋势。但在智能农业的诸多技术中&#xff0c;自动…

【OpenMV】AprilTag 机器视觉定位技术详解

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

C++开发基础之自定义异步日志库实现及性能测试

1. 前言 在软件开发中&#xff0c;日志记录是一个必不可少的部分。通过日志&#xff0c;我们可以记录系统的运行状态、错误信息以及调试数据。然而&#xff0c;当系统的日志量很大时&#xff0c;日志写入操作可能会影响系统的性能&#xff0c;尤其是在 I/O 操作较为频繁的情况…

VR虚拟展厅的应用场景有哪些?

虚拟展厅作为一种利用虚拟现实技术构建的三维展示空间&#xff0c;其应用场景广泛且多样。视创云展为企业虚拟展厅搭建提供技术支持。以下是一些主要的应用场景&#xff1a; 1. 博物馆和艺术展览 文物保护与展示&#xff1a; 在博物馆中&#xff0c;为了保护珍贵的文物和艺术…

初识命名空间

1.创建两个命名空间 ip netns add host1 ip netns add host2 2. 查看命名空间 ip netns ls 3 、 创建veth ip -netns host1 link add veth0 type veth peer name host1-peer 4、 查看命名空间接口 ip -netns host1 address 5、 把host1-peer移动到host2命名空间 ip -ne…

编译过程例题

答案&#xff1a;A 知识点&#xff1a; 词法分析&#xff1a;从左到右逐个扫描源程序中的字符&#xff0c;识别其中如关键字&#xff0c;标识符&#xff0c;常数&#xff0c;运算符以及分隔符 语法分析&#xff1a;根据语法规则将单词符号分解成各类语法单位&#xff0c;并分…

1.2CubeMAX创建FREERTOS入门示例

1.CUBEMAX快速配置 V2改为V1否则编译会报错 2.Freertos各配置选项卡解释 Events &#xff1a;事件相关的创建 Task and Queues &#xff1a; 任务与队列的创建 Timers and Semaphores &#xff1a; 定时器和信号量的创建 Mutexes &#xff1a; 互斥量的创建 FreeRTOS Heap…

android之bootchart的使用

文章目录 简述流程 简述 主要是记录开机运行时的一些进程记录情况 流程 1.开启bootchart 输入以下命令 adb shell touch /data/bootchart/enabled然后重新启动设备&#xff0c;即可记录开机过程中的一些文件,如下所示 如果不想要bootchart进行记录&#xff0c;直接删除掉/…

STM32单片机HAL库——ADC输入

一、单通道采集 二、单通道DMA采集 使能DMA 三、定时器采集DMA传输 选择定时器1的通道1作为触发源&#xff0c;在TIM1的上升沿进行采集 定时器1挂载在APB2上面&#xff0c;APB2上定时器的频率为168MHZ psc168-1 arr1000-1 TIM1的时钟频率为168/168/10001kHZ pulse设置为500…

云计算之大数据(下)

目录 一、Hologres 1.1 产品定义 1.2 产品架构 1.3 Hologres基本概念 1.4 最佳实践 - Hologres分区表 1.5 最佳实践 - 分区字段设置 1.6 最佳实践 - 设置字段类型 1.7 最佳实践 - 存储属性设置 1.8 最佳实践 - 分布键设置 1.9 最佳实践 - 聚簇键设置 1.10 最佳实践 -…

C# WPF燃气报警器记录读取串口工具

C# WPF燃气报警器记录读取串口工具 概要串口帧数据布局文件代码文件运行效果源码下载 概要 符合国标文件《GB15322.2-2019.pdf》串口通信协议定义&#xff1b;可读取燃气报警器家用版设备历史记录信息等信息&#xff1b; 串口帧数据 串口通信如何确定一帧数据接收完成是个…

golang学习笔记06——怎么实现本地文件及目录监控-fsnotify

推荐学习文档 基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总golang学习笔记01——基本数据类型golang学习笔记02——gin框架及基本原理golang学习笔记03——gin框架的核心数据结构golang学习笔记04——如何真正写好Golang代码&…

在嵌入式板子上搭建和自定义live555服务器---编译问题和方法整理

live555 官方网站 点我直达&#xff0c;live555是一个简单的专注于实现RTSP服务器的开源库。它自带解析H264 H265 mp3等源的API&#xff0c;有一个简单的推流文件参考RTSP服务器例程testH264VideoStreamer也有官方实现的LIVE555 Media Server。无论是命令行使用还是用API实现定…

【最新华为OD机试E卷-支持在线评测】分糖果(100分)-多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…

pyautogui进行点击失效,pyautogui.click()失效

背景&#xff1a;在Pycharm里&#xff0c;使用pythonpyautogui调用 .exe程序文件时候&#xff0c;当程序界面出来之后&#xff0c;鼠标失去反应&#xff0c;用pyautogui进行点击。后面尝试使用图片相似也无法实行点击。 解决方法&#xff1a;运行Pycharm或者其他ide的时候选择…