c/c++语言MCU学习笔记

程序=数据结构+算法

算法:解决问题的方法的步骤

算法的分类:

数值运算法和非数值运算法

算法的表示方法;

自然语言表示法、流程图  N/S        

NS流程图,又被称为N-S图,或者是盒图,它是一种可视化建模的结构化编程。NS流程图的结构分为图形、流程线和文字,其特点包括直观表达、容易学习、能够保证程序设计的质量等。但如果是手工作图,不易修改。

NS流程图主要应用于程序算法,它可以限制控制转移,保证程序稳定,比传统程序流程图更方便、直观,因此受到程序设计人员的欢迎。同时,它通过简单的条件和盒子套用,能够更形象地描述出程序表达,方便后期测试,也更符合程序员思考逻辑,并且操作简单,能够为新手设计师提供学习便利,在学习教育上更容易被学生接受。

伪代码的目的是清晰地表达算法的逻辑和步骤,它不遵循特定编程语言的严格语法规则,但能让人们直观地理解算法的基本流程和思路。它在算法设计、交流和理解中经常被使用。

结构化程序就是用高级语言表示的结构化算法

自顶向下  逐步细化  模块化设计        结构化编码

单片机c语言程序开发流程

1.项目规划

1.成本要求,和时间要求,

2.输入输出接口是什么,接口的定义,

3.项目的结果要求是什么,项目的结果如何去验证,

4.项目需要有那些测试,

5,项目设计要采用什么样的硬件方案,使用哪一种单片机,单片机的资源是否满足需求,

6.性价比是否合适,是否方便购买,

7.单片机的仿工具如何,硬件设计和软件设计如何配合,人员分工)

2.  编写程序  汇编程序和c、c++程序(都需要包含头文件)、以及库文件

   tips:文件的包含  函数的声明   常量定义

3.链接文件(指定程序段在存储器中的位置)

4、生成目标代码  (二进制代码)

5.下载  调试   修改

单片机程序的总体结构

1启动文件+2主程序+3中断   服务程序    

1启动文件  复位延时  初始化ram   配置振荡器  

2主程序单片机和应用程序的初始化。打开主主中断开关,执行主循环程序

3.关注中断执行频率  和执行时间  中断嵌套   优先级不同时

如何编写驱动文件

技术基础要求:

1.指件(函数指针,空指针,结构体指针等)
2.结构体(struct)
3.联合体(union)
4.枚举(enum)
5.动态分配内存(malloc)
预处理器指令(宏定义,条件编译,文件包含,错误指示)
7.链表
8.操作系统的线程间通信(队列,信号量)

写驱动的流程


1、分析原理图&看数据手册


2、写.h文件


        0.命名规则(项目_层_设备名_H)
        1.定义接口&明确解耦点(南向接口、北向接口、阻塞非阻塞,事件驱动,中断硬实时)

        2.明确资源(堆栈,数据流大小,队列数量,中断优先级,线程数量,栈深)

        3.明确数据流方式(共享内存,线程通信,多核通信)
        4.包含头文件(编译器库、操作系统库、硬件驱动库等)

3、写.c文件


        1.实现接口
        2.测试节点(Trace、RTT接口),单元测试节点。


4、单元测试

(接口容灾能力、数值范围、传入类型&合法性判断等)

5、上传git分

代码规范的目标

(1)代码简洁精炼,美观,可持续性好

(2)高效率
(3)高复用,可移植性好
(4)高内聚,低耦合
(5)没有几余

(6)规范性,代码有规可循.

(7)特殊排版,特殊语法,特殊指令,必须特别说明
代码规范的参考书
代码规范标准参考(1)google,华为等大厂(2)典型开源项目,如opencv,opengl, boost库等

头文件包含


(1)先系统文件,后用户头文件.系统文件使用: #include <xxx.h>,
自定义和第三方库头文件使用: #include“xxx.h"
(2)如果头文件与程序文件在同一个子目录里,则可以这么写: #include"./xxx.h”
(3)如果头文件在上级子目录,则可以这么写: #include"../xxx.h"

(4)如果头文件位于某个下级子目录里,那么以下级子目录的名字开头: #include"somedir/xxx.h"

(5)如果头文件位于某个与当前子目录平行的"兄弟"子目录里,则需要这么写: #include"/somedirlxxx.h'

(6)只引用需要的头文件

MCU层级规划

BSP: 板级支持驱动程序


BSP: Board Support Package
MCU和板上外设器件(比如MPU6050)的通信与交互过程有时候分两种:
1裸机(有限状态机)情况下,写的驱动程序2.在操作系统下,写驱动程序。

Core: MCU驱动程序


面向MCU进行编程,初始化MCU内部的外设(时钟,IIC,SPI等外设)。包含main.c文件。


Drivers: 厂商SDK程序


MCU厂商和MCU内的CPU厂商提供的,用来对CPU和偏上外设编程时用的驱动库,一般由厂家提供。

tips:当面向mcu编程时,调用的就是drivers厂商提供的hall库,对外设进行初始化


Middlewares:中间件


抽象程度很高,能在各个项目中安插通用的:LVGL\FreeRTOS\数学库\快速傅里叶变换库

SYSTEM: 系统配置层对系统定义整体的宏;


应用层:
实现具体地应用逻辑,

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值