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

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 Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结