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

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

相关文章

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre