单片机程序框架,适合C语言提升

该博客介绍了如何通过模拟操作系统的方式将C语言过程化编程转化为对象化,以降低STM32F103RCT6单片机中各模块的耦合度,便于代码移植和维护。提供了详细的使用步骤,包括文件结构说明、任务创建与初始化,以及一个1秒打印一次的主任务示例。附带下载链接供读者实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单片机结构框架

框架说明

	通过模拟操作系统方式,实现C语言由过程化转为对象化,减少模块间的耦合度,便于移植与维护。作为一个C语言提升项目是一个很好的工程!

使用说明

	下载工程后,工程本身是一个STM32F103RCT6工程,可以直接软件仿真。

下载后根据使用说明配置。

使用说明:
1、文件夹内容说明:
	s_base:一些基础文件log、类型定义等
	s_driver:外设驱动文件
	s_sys:系统调用文件,每个任务的具体调用
2、使用方法:
	1.先将s_base、s_driver、s_sys三个文件夹复制到自己的工程目录下,并包含相应头文件路径,在uart.c中实现log重定向;
	2.新建USER文件夹,并增加App.c、App.h文件;
	3.重写系统滴答函数,实现g_u64Sysclick自增,单位时间1ms
		eg://重写滴答函数
			void HAL_IncTick(void)
			{
				g_u64Sysclick++;
			}
	4.定义任务(以主任务为例,其它类似):
	增加主任务级别及主任务结构体
		#define APP_MTASK_LEVEL  1              // app 主任务级别
		#define APP_STASK_LEVEL  0              // app 子任务级别
		st_MainTask     g_stMAppTsak;           // 主应用任务
		st_SubTask      g_stSAppTask;           // 子应用任务
	写主任务运行函数
		eg:// 主应用运行函数, 1s打印一次
			// 软件仿真时为10s 一次
			static void APP_Run(void *arg)
			{
				LOG.D("Test Build Time: %s %s\r\n", __DATE__, __TIME__);   
				Sys_Delay(1000);
			}
	写住任务初始化函数:
		eg:static void APP_Init(void)
			{
				g_stMAppTsak.m_pid = APP_MTASK_LEVEL; 
				g_stSAppTask.m_sid = APP_STASK_LEVEL;
				g_stSAppTask.m_name = appName;
				g_stSAppTask.m_fun = APP_Run;
				Sys_CreatTask(&g_stMAppTsak, &g_stSAppTask); //创建主应用
			}
	5.增加任务入口函数(此函数在main.c的while(1)中调用)
		eg: //任务入口
			void MainTask_Entrance(void)
			{
				Sys_InitTask();         //初始化任务				
			//    LED_Init();         //运行灯初始化
				APP_Init();
				Sys_RunTask();  //运行任务
				
			}	

下载链接

链接:https://pan.baidu.com/s/1etGhk_6KPfP-7PyKX2tWFQ
提取码:q1w2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值