本文主要是介绍【蓝桥杯嵌入式(一)程序框架和调度器】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
蓝桥杯嵌入式(一)程序框架和调度器
- 序、代码命名规则
- 零、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里的
具体框架见链接: 视频出处
这篇关于【蓝桥杯嵌入式(一)程序框架和调度器】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!