单片机开发框架

本文介绍了基于C语言的框架式编程思想,包括数据定义、初始化、系统循环更新等步骤。使用STC单片机和KeiluVision5作为开发环境,利用VisualStudioCode进行代码维护,并针对两个环境的兼容性问题提出了解决方案,如宏定义DEBUG头文件。此外,文章还提到了代码风格约定和变量命名规范。
摘要由CSDN通过智能技术生成

整体语言代码结构

简体中文
英文


编程语言

C语言 (The C Programming Language)


硬件环境

STC降龙棍


编译环境

Keil uVision5 C251


代码维护环境

Visual Studio Code


框架式编程

这是框架式编程?

这是一种从整个软件系统的高层次全局视角观察和理解代码的方式。通过代码的上帝视角,开发者可以深入了解软件系统的整体架构、各个部分之间的关系,以及整个系统所解决的问题。这种视角需要开发者具备丰富的知识和经验,熟练掌握各种设计模式和架构模式,并能够在全局范围内做出有利于系统演化和扩展性的设计决策。通过代码的上帝视角,开发者能够更好地理解和优化整个系统,从而提高软件质量和开发效率。

框架说明:

	执行流程:
			1.数据定义
			(执行1次)
			---------------------

			2.Sys_Init()
			(执行1次)
			---------------------

			3,4,5
			(循环执行)
			3.Sys_Draw()数据绘制
			4.User_Updata()用户干预更新数据
			5.Sys_Updata()系统自动更新数据

代码风格约定

**本代码严格遵循微软代码风格约定

局部变量:   小写可(加下划线)
    float sum = 0.0f;
    float sum_count = 0;


全局变量:  g_开头加小驼峰(可加下划线)
    int g_maxStudents = 100;
    float g_averageScore = 0.0f;


函数:    大驼峰(可加下划线)
int CalculateSum(int x, int y);
int Calculate_Sum(int x, int y);


宏定义:  全大写
#define PI 3.14159265358979323846

关于Visual Studio Code调试维护说明

由于keil C251 和VSCode 2个环境的不兼容性,比如使用bit sfr bdata interrupt 时,语法高亮将会失效,为了解决这个问题

特别编写了一个debug.h的头文件来兼容维护环境,以保持VSCode下的语法高亮显示.

需要注意的是,在keil编译时一定注释掉OPEN_VSCODE_DEBUG宏定义,否则编译将会报错

config.h

如果在维护环境下请放开,在keil环境中编译时必须注释该行
####define OPEN_VSCODE_DEBUG ,在编译环境中请注释这行

#define OPEN_VSCODE_DEBUG //注释该行,将不进入VSCODE调试,为了VSCODE代码编写兼容keil,在烧录前务必注释该行
#ifdef OPEN_VSCODE_DEBUG
#include "../debug/debug.h"
#endif

License

作者:程序猿Debug

MCU_STC License

main.c


// 编译前,请务必阅读   README.md
#include "config.h"
#include "uart.h"
/*
*----------------------------------------------------------------------------------------------
* 函数名称:main()
* 函数功能:单片机编程框架
* 入口参数:@
* 函数返回:@
* 当前版本: Ver1.0
* 修改时间:2023/03/25 22:01:57
* 作者:t176#qq.com
* 创建时间:2023/03/25 22:01:57
* 框架说明:
		执行流程:
				1.数据定义
				(执行1次)
				---------------------

				2.Sys_Init()
				(执行1次)
				---------------------

				3,4,5
				(循环执行)
				3.Sys_Draw()数据绘制
				4.User_Updata()用户干预更新数据
				5.Sys_Updata()系统自动更新数据

-----------------------------------------------------------------------------------------------
*/
//  1.定义数据

void main()

{

	Sys_Init(); // 初始化
	while (1)
	{

		Sys_Draw();
		User_Updata();
		Sys_Updata();
	}
}
// 系统式编程框架-----------------------------------------------

/*
*----------------------------------------------------------------------------------------------
* 函数名称:Sys_Init()
* 函数功能:通常用于初始化一些参数
* 入口参数:@
* 函数返回:@
* 当前版本: Ver1.0
* 修改时间:2023/03/25 22:07:24
* 作者:t176#qq.com
* 创建时间:2023/03/25 22:07:24
-----------------------------------------------------------------------------------------------
*/
void Sys_Init()
{
	EAXFR = 1;	  // 使能访问 XFR
	CKCON = 0x00; // 设置外部数据总线速度为最快
	WTST = 0x00;  // 设置程序代码等待参数,
				  // 赋值为 0 可将 CPU 执行程序的速度设置为最快
	/*IO口初始化*/
	P0M0 = 0x00;
	P0M1 = 0x00;
	P1M0 = 0x00;
	P1M1 = 0x00;
	P2M0 = 0x00;
	P2M1 = 0x00;
	P3M0 = 0x00;
	P3M1 = 0x00;
	P4M0 = 0x00;
	P4M1 = 0x00;
	P5M0 = 0x00;
	P5M1 = 0x00;
	UartInit();
	ES = 1;
	EA = 1;
	UartSendStr("Use uart1 \r\n");
}
/*
*----------------------------------------------------------------------------------------------
* 函数名称:Sys_Draw()
* 函数功能:数据显示,比如数码管,LED灯,TFT 用于数据展示
* 入口参数:@
* 函数返回:@
* 当前版本: Ver1.0
* 修改时间:2023/03/25 22:08:05
* 作者:t176#qq.com
* 创建时间:2023/03/25 22:08:05
-----------------------------------------------------------------------------------------------
*/
void Sys_Draw()

{
	UartRev();
	

}

/*
*----------------------------------------------------------------------------------------------
* 函数名称:User_Updata()
* 函数功能:在程序运行中,通常有很多用户需要干预的过程,比如键盘输入
* 入口参数:@
* 函数返回:@
* 当前版本: Ver1.0
* 修改时间:2023/03/25 22:09:12
* 作者:t176#qq.com
* 创建时间:2023/03/25 22:09:12
-----------------------------------------------------------------------------------------------
*/
void User_Updata()
{
}

/*
*----------------------------------------------------------------------------------------------
* 函数名称: Sys_Updata()
* 函数功能:通常用于系统自动维护执行的数据(无需用户干预)
* 入口参数:@
* 函数返回:@
* 当前版本: Ver1.0
* 修改时间:2023/03/25 22:10:37
* 作者:t176#qq.com
* 创建时间:2023/03/25 22:10:37
-----------------------------------------------------------------------------------------------
*/
void Sys_Updata()
{
}
/*----------------用户自定义的函数----------------*/

完整框架代码下载地址
https://download.csdn.net/download/dirhack/87630206

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿Debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值