摘要: 预编译#error的使用 1、引言 说到预编译,大家立刻就能想到#define、#if、#ifdef和#ifndef等熟悉的预编译命令。其实#include,我们通常放在源文件用来包含头文件,它也是预编译命令。当然这不是这篇文章的重点。 这篇文章主要讲解下#error预编译命令,对于什么是预编译,预编译的作用等基础知识点不再 阅读全文
posted @ 2022-12-17 11:57 Fireflycjd 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 关于共享资源保护的思考 1、引言 先聊聊分享这篇文章的原因,在使用STM32时,我发现对于GPIO输出操作,可以使用GPIOx_ODR寄存器,也可以使用GPIOx_BSRR寄存器。 对应的标准外设库API接口有 void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t PortV 阅读全文
posted @ 2022-12-17 10:24 Fireflycjd 阅读(252) 评论(0) 推荐(1) 编辑
摘要: 1、概念 所谓表驱动法(Table-Driven Approach)简而言之就是用查表的方法获取数据。此处的“表”通常为数组,但可视为数据库的一种体现。根据字典中的部首检字表查找读音未知的汉字就是典型的表驱动法,即以每个字的字形为依据,计算出一个索引值,并映射到对应的页数。相比一页一页地顺序翻字典查 阅读全文
posted @ 2022-11-05 23:39 Fireflycjd 阅读(417) 评论(0) 推荐(2) 编辑
摘要: 1、简介 这里先介绍下软件定时器和硬件定时器的区别 硬件定时器: CPU内部自带的定时器模块,通过初始化、配置可以实现定时,定时时间到以后就会执行相应的定时器中断处理函数。硬件定时器一般都带有其它功能,比如PWM输出、输入捕获等等功能。但是缺点是硬件定时器数量少!! 软件定时器: 软件定时器允许设置 阅读全文
posted @ 2022-09-26 21:27 Fireflycjd 阅读(323) 评论(0) 推荐(1) 编辑
摘要: 1、前言 直接看代码 uint32_t Time_Interval() { static uint32_t old_time_tick; uint32_t data; data = sys_time_tick_ms - old_time_tick; old_time_tick = sys_time_ 阅读全文
posted @ 2022-07-09 11:29 Fireflycjd 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 1、引言 最近在查一个bug,查到最后发现是数组越界导致的。数组只有30个字节,代码却向这个数组填充了35个数据,这个bug还是偶现的,查到它确实废了一番功夫。我就突然想到:C语言为什么不检查数组下标呢???先来个demo验证下 #include<stdio.h> #include<stdlib.h 阅读全文
posted @ 2022-05-25 22:04 Fireflycjd 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 1、回调函数 关于回调函数,在之前的文章《回调函数》已经详解讲解过了,这个文章不再讲解,不太懂的同学请看之前的文章《回调函数》。在之前讲解回调函数中就使用串口作为示例,使用回调函数可以方便封装通讯库,芯片/模块厂家的SDK和部分开源库经常这样做,这样可以实现模块间的解耦,模块化编程。 这篇文章主要讲 阅读全文
posted @ 2022-05-08 22:53 Fireflycjd 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 1、函数指针 学习回调函数,其实就是函数指针的应用,关于函数指针在之前的文章《指针与函数》中有详细的讲解,这里不再展开详解,重新贴一下之前文章中函数指针的示例代码 #include <stdio.h> void MyFun1(int x); void MyFun2(int x); void MyFu 阅读全文
posted @ 2022-04-16 16:51 Fireflycjd 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 1、指针函数 指针函数,从名字上看它本质上是一个函数。指针函数:返回值类型是指针的函数。函数声明如下: int *plusfunction(int a,int b); 当然也可以写成如下格式: int* plusfunction(int a,int b); 让指针标志 * 与int紧贴在一起,而与函 阅读全文
posted @ 2022-04-10 08:59 Fireflycjd 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 1、定义 指针:C语言中某种数据类型的数据存储的内存地址,例如:指向各种整型的指针或者指向某个结构体的指针。 数组:若干个相同C语言数据类型的元素在连续内存中储存的一种形态。 数组在编译时就已经被确定下来,而指针直到运行时才能被真正的确定到底指向何方。所以数组的这些身份(内存)一旦确定下来就不能轻易 阅读全文
posted @ 2022-03-29 21:46 Fireflycjd 阅读(310) 评论(0) 推荐(0) 编辑