C语言
文章平均质量分 78
StrongerSun
虽千里,吾往矣。
展开
-
C语言宏的进化
c语言宏的使用原创 2024-01-30 15:22:21 · 623 阅读 · 0 评论 -
程序调用的几种方式
程序调用的几种方式原创 2024-01-29 19:11:28 · 211 阅读 · 0 评论 -
MISRA-2012 规则整理
MISRA-2012 规则整理,方便大家查阅原创 2023-08-10 17:40:10 · 1228 阅读 · 0 评论 -
MISRA C-2004规则整理
为了方便标准的查阅,进行MISRA C-2004规则整理原创 2023-08-10 17:58:03 · 546 阅读 · 0 评论 -
C语言函数的可重入性
一、不可重入函数。在函数中如果我们使用静态变量了,导致产生中断调用别的函数的 过程中可能还会调用这个函数,于是原来的 静态变量被在这里改变了,然后返回主体函数,用着的那个静态变量就被改变了,导致错误。这类函数我们称为不可重入函数。在 嵌入式系统的设计中,经常会出现多个任务调用同一个函数的情况。如果这个函数不幸被设计成为不可重入的函数的话,那么不同任务调用这个函数时可能修改其他任 务调用这个函数的数据,从而导致不可预料的后果。不可重入函数在实时系统设计中被视为不安全函数。满足下列条件的函数多.原创 2021-08-24 23:52:54 · 1910 阅读 · 0 评论 -
C语言 printf 的用法总结(完善中)
printf函数是一个“可变参数函数”,其函数的参数的个数和类型都是可变的,每一个参数的输出格式都有对应的格式说明符与之对应,从格式串的左端第1 个格式说明符对应第 1 个输出参数,第 2 个格式说明符对应第 2 个输出参数,第 3个格式说明符对应第 3 个输出参数,以此类推。其中,格式说明符的形式如下(方括号 [] 中的项为可选项):%[flags][width][.prec][length] type/*用中文标识如下:*/%[标志符][宽度][精度][长度]类型符1、类型符(t原创 2021-08-17 14:42:06 · 3203 阅读 · 0 评论 -
C语言中Volatile与Register关键字
目录区别:volatile的用途:Register的用途:区别:register:这个关键字请求编译器尽可能的将变量存在 CPU 内部寄存器中而不是通过内存寻址访问以提高效率。注意是尽可能,不是绝对。你想想,一个 CPU 的寄存器也就那么几个或几十个,你要是定义了很多很多 register 变量,它累死也可能不能全部把这些变量放入寄存器吧,轮也可能轮不到你。volatile:的本意是“易变的”,由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RA..原创 2021-06-30 21:44:27 · 612 阅读 · 1 评论 -
嵌入式四种应用程序架构
在工作中经过摸索实验,总结出单片机大致应用程序的架构有四种:1. 简单的前后台顺序执行程序,这类写法是大多数人使用的方法,不需用思考程序的具体架构,直接通过执行顺序编写应用程序即可。2.状态机3. 时间片轮询法,此方法是介于顺序执行与操作系统之间的一种方法。4. 操作系统,此法应该是应用程序编写的最高境界。下面就分别谈谈这四种方法的利弊和适应范围等。一、顺序执行法 这种方法,也叫前后台执行法,通常在main函数中执行主程序,在中断发生后进入中断函数。...原创 2021-01-19 21:36:11 · 2137 阅读 · 4 评论 -
基于STM8的TM1640驱动程序(附八段数码管配置工具)
目录.c文件.h文件八段数码管配置工具.c文件#include "Bsp_TM1640.h"const uint8_t DIG_TAB[16] ={ 0X3F,// 0 0X06,// 1 0X5B,// 2 0X4F,// 3 0X66,// 4 0X6D,// 5 0X7D,// 6 0X07,// 7 0X7F,// 8 0X6F,// 9 0x79,//"E" 10 0x50,//"r" 11 0x3E,//"U" 12 0x3...原创 2020-12-08 22:27:43 · 2279 阅读 · 0 评论 -
C语言基于数组的简单FIFO
目录.c文件.h文件.c文件/******************************************************************************** * Copyright (C), * @file Bsp_adc.c * @brief * * @version @date @author @explain * V1.0 2020...原创 2020-12-04 00:54:12 · 743 阅读 · 0 评论 -
《c语言深度剖析》读书笔记(七)文件结构
本文是自己读书的时候一些关于该书的重点及感悟目录1、文件内容的一般规则2、文件名命名的规则1、文件内容的一般规则(1)每个头文件和源文件的头部必须包含文件头部说明和修改记录。(2)各个源文件必须有一个头文件说明,头文件各部分的书写顺序下:(3)源文件各部分的书写顺序如下:(4)需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部。2、文件名命名的规则(1)文件标识符分为两部分,即文件名前缀和后缀。文件名前缀的最前面要使用...原创 2020-06-12 23:13:06 · 171 阅读 · 0 评论 -
《c语言深度剖析》读书笔记(六)函数
本文是自己读书的时候一些关于该书的重点及感悟目录1、函数的好处2、编码风格3、函数设计的一般原则和技巧4、递归1、函数的好处(1)降低复杂性(2)避免代码重复(3)限制改动带来的影响(4)隐含顺序(5)改进性能(6)进行集中控制(7)隐含数据结构(8)隐含指针操作(9)隐藏全局变量2、编码风格(1)每一个函数都必须有注释,即使函数短到可能只有几行。(2)每个函数定义结束之后以及每个文件结束之后都要加一个或若干个空行。(3)在一个函数原创 2020-06-12 23:07:29 · 223 阅读 · 0 评论 -
安富莱C语言编码规范
本文为博主根据安富莱电子论坛的帖子整理而成,如有侵权,可联系删除1--文件与目录1、文件及目录的命名规定可用的字符集是[A-Z;a-z;0-9;._-]。2、源文件名后缀用小写字母 .c 和.h。3、文件的命名要准确清晰地表达其内容,同时文件名应该精练,防止文件名过长而造成使用不便。在文件名中可以适当地使用缩写。以下提供两种命名方式以供参考:(1)各程序模块的文件命名开头 2 个消协字母代表本模块的功能:如:主控程序为 mpMain.c,mpDisp.c …(...原创 2020-06-07 13:22:42 · 2511 阅读 · 0 评论 -
《c语言深度剖析》读书笔记(四)指针和数组
本文是自己读书的时候一些关于该书的重点及感悟目录1、指针2、数组3、指针和数组的关系4、指针数组和数组指针5、多维数据和多维指针6、数组参数和指针参数7、函数指针1、指针(1)指针,即存放内存地址的变量,长度固定,32位系统中长度为4,说白了就是寻址位数。当然,指针是变量,那么免不了被存取,当然就会有存放此指针的地址,用&p获取;2、数组(1)int a[5]; a 作为右值时其意义与&a[0]是一样,代表的是数组首元素的首地址,而不是数.原创 2020-06-05 23:01:39 · 189 阅读 · 0 评论 -
《c语言深度剖析》读书笔记(五)内存管理
本文是自己读书的时候一些关于该书的重点及感悟目录1、野指针2、堆、栈、静态区3、常见的内存错误及对策1、野指针(1)定义指针变量的同时最好初始化为 NULL,用完指针之后也将指针变量的值设置为 NULL。也就是说除了在使用时,别的时间都把指针“栓”到 0 地址处。这样它就老实了。2、堆、栈、静态区(1)静态区:保存自动全局变量和 static 变量(包括 static 全局和局部变量)。静态区的内容在总个程序的生命周期内都存在,由编译器在编译的时候分配。(2)栈.原创 2020-05-31 16:39:11 · 216 阅读 · 0 评论 -
《c语言深度剖析》读书笔记(三)预处理
本文是自己读书的时候一些关于该书的重点及感悟目录1、宏定义2、条件编译3、文件包含4、#error预处理5、#line预处理6、#pragma 预处理1、宏定义(1)#define 可以出现在代码的任何地方,从本行宏定义开始,以后的代码就就都认识这个宏了;(2)我们知道 const 修饰的数据是有类型的,而define 宏定义的数据没有类型。为了安全,我建议你以后在定义一些宏常数的时候用 const代替,编译器会给 const 修饰的只读变量做类型校验,减少错误的可能原创 2020-05-29 23:33:09 · 183 阅读 · 0 评论 -
《c语言深度剖析》读书笔记(二)符号
本文是自己读书的时候一些关于该书的重点及感悟原创 2020-05-25 22:03:00 · 277 阅读 · 0 评论 -
《c语言深度剖析》读书笔记(一)关键字
本文是自己读书的时候一些关于该书的重点及感悟目录一、关键字1、auto2、register3、static4、short、int、long、char、float、double5、sizeof6、singed、unsigned7、if、else8、switch、case9、do、while、for10、goto11、void12、ret...原创 2020-03-25 23:30:08 · 211 阅读 · 0 评论 -
C语言学习笔记(一)回调函数
1. 什么是回调函数? 函数 F1 调用函数 F2 的时候,函数 F1 通过参数给 函数 F2 传递了另外一个函数 F3 的指针,在函数 F2 执行的过程中,函数F2 调用了函数 F3,这个动作就叫做回调(Callback),而先被当做指针传入、后面又被回调的函数 F3 就是回调函数。2. 为什么要使用回调函数?很多朋友可能会想,为什么不像普通函数调用那样,在回调的地方直接...原创 2019-12-11 15:39:24 · 349 阅读 · 0 评论 -
c语言常量常用后缀:ul,f,
目录一,ul二,f三,各种进制四,无后缀五,注意一,ul由于整型常数默认是signed int的。所以对整型常数进行类型转换的后缀只有:u或U(unsigned)、l或L(long)、u/U与l/L的组合(如:ul、lu、Lu等)。例:100u; -123u; 0x123L;作用字面常量如123一般隐式定义为int型,这样两个int型的数据进行操作后...原创 2019-12-04 22:36:04 · 10683 阅读 · 1 评论 -
个人C语言编写规范,参考华为及安富莱,完善中
1 头文件对于C语言来说,头文件的设计体现了大部分的系统设计。原则1.1 建立清晰的编译依赖,需要合理的划分头文件,以及头文件之间的包含关系 特指编译依赖。若x.h包含了y.h,则称作x依赖y。依赖关系会进行传导,如x.h包含y.h,而y.h又包含了z.h,则x通过y依赖了z。依赖将导致编译时间的上升。虽然依赖是不可避免的,也是必须的,但是不良的设计会导致整个系统的依赖...原创 2019-11-02 15:15:27 · 353 阅读 · 0 评论 -
C 语言一个简单高效的按键扫描处理程序
转载出处:https://blog.csdn.net/sdnu2011d1/article/details/78268082 我非常坚信这种按键处理办法的便捷和高效,可以移植到任何一种嵌入式处理器上面,因为C语言强大的可移植性。 同时,这里面用到了一些分层的思想,在单片机当中也是相当有用的,也是本文的另外一个重点。 对于老鸟,建议直接看那两个表达式,然后自己想想就...转载 2021-01-19 22:15:23 · 2405 阅读 · 1 评论