xym-ee
  • 计算机与嵌入式开发学习
  • 1-1.编程基础
    • C 语言
      • C 中的数据
      • C 语言基础
      • 字符输入输出
      • 函数
      • 数组和指针
      • 字符串处理
      • 存储类别
      • 文件 I/O
      • 复杂数据类型
      • 位操作
      • 预处理和 C 库
    • 数据结构和算法入门
    • leetcode 刷算法题
      • 递归与栈
      • 二叉树与递归
      • 回溯问题
      • 动态规划 1
    • 基本工具和使用
      • shell
      • shell 脚本
      • vim 编辑器
      • 命令行数据整理
      • 命令行环境和配置
  • 1-2.计算机系统基础(CSAPP)
    • 1.计算机基础
    • 2.数据的表示
    • 3.加减运算
    • 4.乘除运算
    • 5.程序的表示转换和链接
    • 6.IA32指令
    • 7.过程调用
    • 10.程序的链接
  • 1-3.数字电路、计算机组成
    • 1.数字电路、virtual circuit board
    • 2.计算机组成/steam:Turing Complete
    • 3.微机原理与接口技术(8086)
  • 1-4.计算机网络
    • 1.从浏览器开始
    • 2.协议栈和网卡
    • 3.网络设备
    • 4.运营商、接入网
    • 5.服务器
    • 6.数据返回浏览器
    • socket编程
  • 1-5.操作系统
    • 0.绪论
      • 1.应用视角的操作系统
      • 2.硬件视角的操作系统
      • 3.数学视角的操作系统
      • 4.状态机模型的应用
    • 1.并发
      • 1.并发 bug 的解决思路
      • 2.互斥
      • 3.同步
      • 4.信号量
      • 5.真实并发
      • 6.调试技巧
      • 7.os kernel 实现
    • 2.虚拟化
      • 1.操作系统上的进程
      • 2.进程的地址空间
      • 3.系统调用和unix shell
      • 4.C 标准库的实现
      • 5.linux 操作系统
      • 6.可执行文件和加载
      • 7.动态链接和加载
      • 8.内核的实现
      • 9.fork 的应用
    • 3.持久化
      • 1.存储设备的原理
      • 2.输入输出设备模型
      • 3.设备驱动程序
      • 4.文件系统 API
      • 5.fat 和 unix 文件系统
      • 6.持久数据的可靠性
    • 总结
  • 2-1.嵌入式裸机开发
    • 嵌入式系统通信接口与协议
    • cortex-m 内核芯片裸机开发
    • MPU
  • 2-2.中等规模系统开发
    • LVGL 图形库
    • 裸机开发的软件框架
    • 基于 rtos 开发
  • 2-3.armv7-m架构与 rtos 原理
    • armv7-m 架构
    • rt-thread 内核实现
    • rt-thread 驱动开发
  • 3-1.linux 应用开发基础
  • 3-2.linux 镜像构建
    • uboot 使用
    • uboot 适配
    • uboot 启动分析
    • uboot 自定义命令
    • linux 内核适配
    • linux 内核启动分析
    • busybox 根文件系统构建
  • 3-3.linux 驱动开发
    • 驱动开发基础
    • sysfs
    • led 驱动
    • 设备树
    • pinctrl 和 gpio 子系统
    • 并发控制
由 GitBook 提供支持
在本页

这有帮助吗?

2-2.中等规模系统开发

  • LVGL

  • rt-thread 基本使用

  • rt-thread 中的外设

  • rt-thread 中的多任务

下面这段我写在 2023.07.26 ,此时再来回顾当年学习 stm32 裸机开发。

一个人的精力终归式有限的。使用裸机开发,把控每一个细节,甚至自己研究更易用的框架会消耗大量的时间。

自己发明的乐趣确实也有,但是计算机世界的公理:每当我们觉得一个东西不好用的时候,一定早就有人也觉得不好用了,并且也有了解决方案。如果没有,那我们的机会就来了,这可能会是一个有价值的点,或许是商业上或者学术上,最不济也可以开源到 GitHub 上。

事实上,使用 MCU 的中等规模系统大多会使用更加软件工程的一套框架:RTOS。比如汽车 MCU 中跑 AUTOSAR ,以及装机量相当大的 FreeRTOS。

RTOS 为实时操作系统,如果有人也是刚用过裸机开开发,那么不用在意其具体含义。先认为这是一个能够加速开发的一组库函数即可。

如果真的有人会看到我写的这些内容,那我猜测你可能是学电子或者学自动化或者机械自动化之类的专业(毕竟学计算机会直接进入一个更陡峭的学习路线),可能也只是在大一上过基本的 C 语言课,然后自己玩了单片机,也不太清楚操作系统、面向对象之类的东西,那么一下子接收 RTOS 这个东西会比较痛苦,尤其是还看着野火的教程的话。

因此,我觉得如果没有接触过 C++ 这类面向对象的编程语言的话,可以先去玩一玩 LVGL 这个图形框架。

LVGL 是使用 C 语言开发的,但是使用了面向对象开发的思想,而且继承等行为在图形上是可视化的,可以更容易的理解程序里的抽象概念。而且 LVGL 里图形库的 C 语言编码方式也是值得学习的。

因此,在学习 rtthread 前,可以先在裸机上做一个基于 LGVL 的小项目,后面再使用 rtthread 时候会容易很多。

轮询

#include "stm32f10x.h"

int main(void)
{
    hardware_init();

    while (1)
    {
        task1();
        task2();
        task3();
        delay_ms(10);
    }
}
int irq1_flag = 0;
int irq2_flag = 0;

int main(void)
{
    hardware_init();

    while (1)
    {
        task1();
        task2();
        task3();
        delay_ms(10);
    }
}

void irq1(void)
{

}
上一页MPU下一页LVGL 图形库

最后更新于7个月前

这有帮助吗?