STM32 水质水位检测项目 (调试模块)和(延时模块)

分层

通过软件架构可以进行分层,驱动层Driver、接口层Interface、应用层App、公共层Common、用户层,分别创建这几个层级文件夹

调试模块:(涉及到驱动层和公共层)

1 打开Driver文件夹

2 将之前的USART文件直接复制到新项目的Driver文件夹中,记得keil中添加.c和.h文件

STM32 案例计算机和串口通讯及学习方法和重映像printf函数(逻辑查询以及寄存器代码如何书写)_stm32库函数串口代码-CSDN博客

printf函数

printf函数可以用来调试,但是随着代码的增多,为了更加方便,可以用条件编译来进行编辑

1 打开Common文件夹

2 新建两个文件debug.c和debug.h文件,用来调试

debug.h

新拓展:

format------格式化的占位符

...------------定义可变的参数

strrchr------从字符串最右边往左边寻找目标字符,找到后返回目标字符的地址函数

##------------连接前后可以用来省略,

FILE--文件路径及其

LINE--行号

cs 复制代码
#ifndef __DEBUG_H__
#define __DEBUG_H__

#include "usart1.h"

#include <stdarg.h>
#include <string.h>

//为了方便调试,定义一个宏进行条件编译
#define DEBUG

#ifdef DEBUG //调试Debug)模式

//从__FILE__中提取文件名
#define FLIENAME (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)

#define dubug_init() Debug_Init()
#define debug_printf(format, ...) printf("[%s:%d]--" format, FLIENAME, __LINE__, ##__VA_ARGS__)
#define debug_printfln(format, ...) printf("[%s:%d]--" format "\r\n", FLIENAME, __LINE__, ##__VA_ARGS__)

#else   //发布(Release)模式 

#define dubug_init()
#define debug_printf(format,...)
#define debug_printfln(format,...)

#endif



//初始化
void Debug_Init(void);

#endif /* __DEBUG_H__ */

debug.c

cs 复制代码
#include "debug.h"

void Debug_Init(void){
    Usart1_Init();
}

延迟模块:(公共层)

1 打开Common文件夹

2 用之前滴答定时器的两个文件delay.c 和delay.h 放入新建立的Common文件夹中

流程:系统滴答定时器中的装载值LOAD值是向下计数,VAL计数器值清零它会自动装载LOAD值进行向下计数,每过一个时钟VAL减1。配置采用系统时钟源

STM32 创建和书写delay.c 和delay.h_stm32 delay.c-CSDN博客

相关推荐
森利威尔电子-1 分钟前
森利威尔SL3180 替换LTC3639 150V降压恒压芯片 3A峰值电流能力转换效率高 静态电流低
单片机·嵌入式硬件·集成电路·芯片·电源芯片
qq_4017004137 分钟前
合宙4G模块Air724UG
嵌入式硬件
yugi9878381 小时前
基于51单片机的篮球计分器设计
单片机·嵌入式硬件·51单片机
编程之升级打怪1 小时前
什么是PWM
嵌入式硬件
zmj3203242 小时前
单片机内存在C 语言编译后的 “逻辑分区”
c语言·单片机·内存分区
魈学习ing3 小时前
IO口无法外部上拉到3.3V以上,或被钳位到3.8V左右
stm32
小柯博客3 小时前
STM32MP2 Secure Boot实战
stm32·单片机·嵌入式硬件
Ww.xh3 小时前
STM32调用AI接口完整教程
stm32·单片机·嵌入式硬件
ZYNQRFSOC3 小时前
基于安路PH2A系列FPGA的JESD204B接口测试
嵌入式硬件·fpga开发
LCG元4 小时前
STM32实战:基于STM32F407的LWIP以太网通信(TCP Server)
stm32·嵌入式硬件·tcp/ip