STM32物联网实战开发(1)——全新的程序框架

这篇具有很好参考价值的文章主要介绍了STM32物联网实战开发(1)——全新的程序框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        现在STM32公司主推的是HAL库的开发,标准库已经不再更新。通过STM32cubeMX的图形界面生成代码非常的方便。

一、程序框架的构想

1、STM32cubeMX 生成的代码与添加的应用代码分离;

2、利用 STM32cubeMX 重新生成代码,不影响应用代码;

3、应用代码的添加,移除与修改,不影响 cube 生成的代码;

4、代码架构方便阅读,编辑,修改与移植;

5、代码架构标准化,可以很方便的应用到产品开发中。

二、程序框架的实现

STM32物联网实战开发(1)——全新的程序框架

1、新增 MyApplication 文件夹,放置 4 个标准 c 文件,分别是公共文件,回调文件,系统文件, 用户初始化文件,后续应用代码均放在此文件夹;

 2、新增 MyApplication.h 文件,包含所有用户代码的头文件与外设头文件,调整外设或用户文件, 只需要调整此文件内的相应头文件即可;

3、main.c 文件标准化。

三 、MyApplication.h

#ifndef __MyApplication_H__
#define __MyApplication_H__

/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "gpio.h"

#include "stdio.h"
#include "stdlib.h"
#include "System.h"
#include "Public.h"
#include "MyInit.h"
#endif
/********************************************************
  End Of File
********************************************************/

1、此文件放置于 main.c 与应用代码文件中,作为头文件的集合;

2、更改处理器外设或应用代码,此文件需要相应的增加或删除相应的头文件。

四 、main.c 文件

1、添加头文件集合

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "MyApplication.h"
/* USER CODE END Includes */

2、添加用户初始化函数

  /* USER CODE BEGIN 2 */
  MyInit.Peripheral_Set();	
  /* USER CODE END 2 */

3、标准化主循环

 /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    System.Run();
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

4、标准化错误处理函数

/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */
  System.Error_Handler();
  /* USER CODE END Error_Handler_Debug */
}

5、标准化断言失败处理函数

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{ 
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
     tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
	System.Assert_Failed();
  /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

五 、system 文件

1、头文件

//定义结构体类型
typedef struct
{
	void (*Run)(void);
	void (*Error_Handler)(void);
	void (*Assert_Failed)(void);
} System_t;

/* extern variables-----------------------------------------------------------*/
extern System_t  System;
/* extern function prototypes-------------------------------------------------*/

主要定义结构体类型 System_t,包含 3 个函数指针,分别为函数运行,系统错误处理,断言失败 处理,被 main.c 文件调用。

2、源文件

/* Private variables----------------------------------------------------------*/
static void Run(void); 
static void Error_Handler(void);
static void Assert_Failed(void);
	
/* Public variables-----------------------------------------------------------*/
System_t System = 
{
	Run,
	Error_Handler,
	Assert_Failed
};

        主要定义结构体 System 以及 3 个函数,并将 3 个函数的名称(首地址)赋值给 System 结构体,完成结构体的初始化。 如此一来,main.c 文件可以通过 System 结构体的函数指针调用 System.c 文件的 3 个函数了。

Run 函数:用户应用代码;

Error_Hander 函数:系统错误处理代码;

Asset_Failed 函数: 断言失败处理代码

六 、Run 函数

static void Run()
{
	//初始化时,LED1,LED2,LED3均亮灯
	//HAL_GPIO_TogglePin -> 取反GPIO输出状态
	//HAL_GPIO_WritePin  -> 设置GPIO输出状态
	//                      GPIO_PIN_SET   -> 输出高电平,灯亮
	//                      GPIO_PIN_RESET -> 输出低电平
	
	//延时500ms,LED1,LED2,LED3均灭灯
	HAL_Delay(500);
	HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin); 
	HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);
	HAL_GPIO_TogglePin(LED3_GPIO_Port,LED3_Pin);
	
}

作为功能演示,简单的实现了 LED1 、LED2 、LED3间隔 1s 闪烁。

这样的全新的程序框架就非常的完美啦,在日后的编写和程序一直都带来了极大的便利。

详细的视频讲解,请关注B站UP:硬件家园,本博客只是供自己学习,复习使用。文章来源地址https://www.toymoban.com/news/detail-430285.html

到了这里,关于STM32物联网实战开发(1)——全新的程序框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32F103物联网实战案例合集】精彩干货,持续新增,关注收藏

     更多配套资料CSDN地址:点赞+关注,功德无量。更多交流+:wulianjishu666 物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客 物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机

    2024年01月24日
    浏览(45)
  • 使用STM32进行联网应用开发(代码可取)

    随着互联网技术的普及和物联网应用的兴起,各种设备和系统开始向互联网靠拢,实现互联互通。在这样的背景下,嵌入式系统的联网需求变得愈发迫切。传统的嵌入式系统往往只需实现单机功能,与外界通信的方式也大多是基于串口通信或者局域网通信,而现在越来越多的

    2024年04月09日
    浏览(39)
  • 基于stm32物联网开发板(2)--LCD屏幕

    LCD应用展示: LCD屏幕应用 屏幕尺寸为1.3寸,分辨率240*240,颜色格式RGB565,驱动IC:ST7789VW; 超大可视角度:大于160°(显示屏中可视角度最大的一种屏幕); 宽电压供电(3V~5V),兼容3.3V和5V电平逻辑,无需电平转换芯片; 采用7线制SPI接口; 工作温度范围为工业级(-20℃~60℃); 军工

    2024年02月04日
    浏览(44)
  • STM32玩转物联网实战篇:2.ESP8266 WIFI模块TCP通信示例详解

    开发板功能区分布图 开发板俯视图     ESP8266 WIFI模块内置TCP/IP网络协议,模块支持三种网络模式,AP、STA和AP+STA模式,AP模式:模块作为WIFI热点,等待其他设备的连接,进行局域网的通信,STA模式:模块作为客户端通过路由器连接外网,和服务器进行通信,AP+STA模式:两

    2024年02月03日
    浏览(62)
  • 基于stm32物联网开发板(3)--SYN6288语音模块

    SYN6288语音模块   SYN6288-A语音合成模块是一款性价比更高,效果更自然的一款中高端语音合技术 。 SYN6288-A通过异步串口接收待合成的文本,实现文本到声音(TTS)的转换。   国内首款语音合成评估板SYN6288-A的推出继承了OSYNO6188-A模块的优秀特点:最小体积,硬件接口简单

    2024年02月16日
    浏览(45)
  • 【物联网】stm32标准库开发常用函数的使用和代码说明

    用于控制端口的读写操作。 GPIO_Init:初始化GPIO端口。 GPIO_WritePin、GPIO_ReadPin:写入或读取指定GPIO引脚的状态。 GPIO_SetPin:设置指定GPIO引脚的状态为高电平。 GPIO_ResetPin:将指定GPIO引脚的状态复位为低电平。 用于管理中断相关操作。 NVIC_EnableIRQ:使能指定的中断。 NVIC_Disab

    2024年02月14日
    浏览(41)
  • STM32 Linux开发板丨STM32MP157开发板资料手册+实战教程+视频教程

    iTOP-STM32MP157开发板是基于意法半导体STARM双Cortex-A7核加单Cortex-M4核的一款多核异构处理器。Cortex-A7内核提供对开源操作系统Linux的支持,借助Linux系统庞大而丰富的软件组件处理复杂应用。M4内核上运行对于实时性要求严格的应用。 开发板既有A7核,又有M4核,从学习者角度来看

    2024年02月12日
    浏览(39)
  • stm32——esp8266物联网开发,连接onenet云平台(http)做智能家居(1)

    此处感谢b站up主——彼岸有光我们有船(我认为讲的和江科大老师一样好,如果习惯江科大老师的讲法的朋友们都可以看看捏) 提供的教程和最初的正点原子的源码,因为我学习的是江科大的stm32,所以进行了部分改编和部分注释,在此把视频内容简化,进行简单的复习。

    2023年04月08日
    浏览(55)
  • STM32基于CubeIDE和HAL库 基础入门学习笔记:物联网项目开发流程和思路

    文章目录: 第一部分:项目开始前的计划与准备 1.项目策划和开发规范  1.1 项目要求文档 1.2 技术实现文档 1.3 开发规范 2.创建项目工程与日志 第二部分:调通硬件电路与驱动程序 第三部分:编写最基础的应用程序 第四部分:完成最终要求、反复调试 第五部分:程序优化、

    2024年02月13日
    浏览(51)
  • 【十年开发积累】STM32产品开发代码案例合集,嵌入式物联网工程师珍贵资料(物联技术666)

    简介     例程涵盖:STM32各类功能配置,外围传感器初始化,模块初始化,物联网协议,操作系统移植,功能开发,产品案例等等,十分具有参考价值。 0001基于STM32F103单片机GPIO实现控制LED灯闪烁的程序代码0001.rar 0002基于STM32F103单片机GPIO实现按键KEY的检测程序代码0002.rar

    2024年02月21日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包