![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c-c++
夏日白云
这个作者很懒,什么都没留下…
展开
-
[嵌入式TDD实战]TDD开发AT26DF驱动模块(五):模块写完
在上一章中,我们写出了第二个接口并在测试用例的保障下进行了重构。这一章中,我们直接一口气干出了整个驱动模块。原创 2020-08-23 10:24:05 · 437 阅读 · 0 评论 -
[嵌入式TDD实战]TDD开发AT26DF驱动模块(四):继续重构继续码
上一章中,我们详细的讲解了在用TDD的方式写完一个接口时的各个步骤。这一章中,我们又实现了一个接口,并对测试和实现代码都进行了重构。原创 2020-08-23 10:23:05 · 291 阅读 · 0 评论 -
[嵌入式TDD实战]TDD开发AT26DF驱动模块(三):第一个测试用例
上一章中,我们把模块的通信监控框架搭起来了。这一章中,我较为详尽的展示了用TDD的方式开发单个接口的各个步骤。原创 2020-08-23 10:22:01 · 406 阅读 · 3 评论 -
[嵌入式TDD实战]TDD开发AT26DF驱动模块(二):掌控通信
上一章中,我们把模块最基础的测试框架搭了起来。这一章中,我们为模块设计了一个依赖于抽象的通信方案,造好了监控模块通信细节的Mock工具。原创 2020-08-23 10:20:24 · 455 阅读 · 2 评论 -
[嵌入式TDD实战]TDD开发AT26DF驱动模块(一):初始化工程
上一章中,我们配置好了我们的开发环境。这一章中要搭建AT26DF驱动模块的基础框架。原创 2020-08-23 10:18:50 · 617 阅读 · 0 评论 -
[嵌入式TDD实战]Unity+VS2012+CodeWarrior v5.x(MCU为MC9S12XEP100)开发环境配置
这章介绍了我为各位朋友配置好的嵌入式TDD开发环境原创 2020-08-23 10:17:04 · 1215 阅读 · 0 评论 -
[嵌入式开发模块]SHT30/20 温湿度传感器 驱动模块
本文给出我自己为SHT30/20写的驱动模块原创 2020-06-07 22:43:05 · 4877 阅读 · 4 评论 -
[嵌入式开发模块]JY61姿态角度传感器 驱动模块
给出我自己为JY61姿态角度传感器写的驱动原创 2020-06-07 11:03:55 · 5460 阅读 · 11 评论 -
[嵌入式开发模块]深度传感器解算板(MS5837转串口板) 驱动模块
这篇文章给出了我自己为 MS5837转串口 深度传感器解算板写的驱动程序。原创 2020-06-06 20:09:53 · 2467 阅读 · 8 评论 -
[嵌入式开发模块]GY25倾斜角度传感器 驱动模块
这篇文章给出了我自己写的GY25传感器模块的驱动原创 2020-06-06 16:38:59 · 9106 阅读 · 12 评论 -
[嵌入式开发技巧]C语言宏配置的各种奇淫技巧
最近刚刚研究出来独立的配置文件技巧,本来只想写写这个技巧的,写着写着就越写越多,干脆就把最近使用宏配置的各种心得都直接写为一篇了。希望各位看官看着过瘾,有所收获。原创 2019-10-18 21:57:10 · 1859 阅读 · 3 评论 -
《The Practice of Programming》读书笔记(一)
最近在看《程序设计实践》,据说这书是一个被名字毁了的好书。看了之后表示认同。其中的很多最佳实践我之前已经在使用,但其中给了很好的归纳。另外还有一些以前没有想到的,让我感觉眼前一亮的。掌握这些最佳实践能够大大提高编程效率、可读性,大大减少bug的概率。其中的实践都是从工作中总结出来的。这是我对这本书的读书笔记。原创 2017-11-14 14:46:53 · 1154 阅读 · 0 评论 -
[嵌入式开发模块]环形缓冲区/循环队列C语言面向对象实现(二)Buffer类源码
这篇文章给出了我自己写的纯C语言面向对象开发的缓冲区模块的源码,使用方法见前一篇。原创 2019-03-06 18:24:37 · 788 阅读 · 0 评论 -
[嵌入式开发模块]环形缓冲区/循环队列C语言面向对象实现(三)Queue类介绍及使用示例
这篇文章给出了我自己写的纯C语言面向对象开发的队列模块原创 2019-03-07 10:57:08 · 772 阅读 · 0 评论 -
[嵌入式开发模块]环形缓冲区/循环队列C语言面向对象实现(四)Queue类源码
这篇文章给出了我自己写的纯C语言面向对象开发的队列模块,使用见前一篇原创 2019-03-07 11:42:49 · 457 阅读 · 0 评论 -
[嵌入式开发模块]Network Time Protocol(NTP)模块
给出了一个我自己写的NTP协议模块,独立于网络协议栈,极易使用原创 2019-05-29 21:26:41 · 1594 阅读 · 1 评论 -
[嵌入式开发模块]MQTT开源库Paho嵌入式C/C++版本的移植及使用(基于W5500 io库)
这篇文章讲解了Paho的MQTT嵌入式C库的移植及使用。实现在嵌入式系统上实现MQTT client。原创 2019-06-16 17:51:46 · 8194 阅读 · 8 评论 -
[嵌入式开发模块]Coap开源库libnyoci移植及简单使用(基于wiz/W5500官方io库)
这篇文章讲了移植libnyoci到wiz io库以实现一个简单的UDP Coap服务器所需要的主要事项原创 2019-07-17 20:45:17 · 1276 阅读 · 0 评论 -
[嵌入式开发模块]NTP客户端模块(基于wiz/W5500官方io库)
这篇文章把之前的NTP模块进一步封装,示例了怎么实现一个request&respond式的UDP客户端源码。原创 2019-09-13 21:14:54 · 983 阅读 · 0 评论 -
[嵌入式开发模块]DNS(Domain Name System)模块 附报文格式和请求过程浅析
这篇文章讲解了DNS的基本知识,并给出了DNS解析/构造模块,两者结合,在示例中手动实现DNS解析过程,帮助读者熟悉DNS系统。原创 2019-10-02 19:37:14 · 1387 阅读 · 2 评论 -
[嵌入式开发模块]DNS客户端模块(基于wiz/W5500官方io库)
这篇文章把之前的DNS模块进一步封装,提供完成一次域名解析IPv4的整个过程的接口。原创 2019-10-03 00:32:39 · 429 阅读 · 0 评论 -
[嵌入式开发模块]环形缓冲区/循环队列C语言面向对象实现(一)Buffer类介绍及使用示例
这篇文章给出了我自己写的纯C语言面向对象开发的缓冲区模块原创 2019-03-06 16:56:47 · 3564 阅读 · 2 评论 -
CppUTest在VS2012下运行环境配置
这篇文章主要介绍了CppUTest测试框架在VS2012下使用时的运行环境配置流程。原创 2018-11-07 13:42:31 · 1339 阅读 · 6 评论 -
实现C语言的异常处理机制 Implementing Exceptions in C
网上冲浪时发现一个很有意思的文献——《Implementing Exceptions in C》,虽然十分古老(1989),但对C语言这种几乎不变的语言来说不存在知识过时的问题。文中讲了怎么在纯C语言中实现类似C++异常处理机制的方法,并提供了库源码,让人眼前一亮,于是翻译一番,作为自己的库的一部分。翻译 2018-10-02 21:31:08 · 2614 阅读 · 0 评论 -
[嵌入式开发模块]MC9S12XEP100 ATD模块 驱动程序
自己对ATD模块进行了一个简单的封装。发现网上流传的大部分示例都是使用同步的方式(轮询转换完成标志位)来获得结果,不符合我追求效率的强迫症性格,所以这个模块中,我是使用了异步事件通知的方式实现的。同时由于硬件提供的多通道方法不够灵活,通道间必须连续;于是自己还加了个用软件方式实现的多通道,实现能够跳着通道扫描自己需要的AN端口。原创 2017-10-23 21:53:33 · 2292 阅读 · 0 评论 -
[嵌入式开发模块]机械按钮模块 纯C语言 面向对象实现 按键消抖、长按、连击
为了方便大家实现机械按钮常用的各种功能(消抖、长按、连击),我对其进行了封装。目前实现要求用户每隔一段时间轮询一下所有按钮的状态,并分别调用一次每个按钮对象的TimeTick方法将其当前状态传入,然后TimeTick方法就会把这个按钮发生了什么事件(按下、抬起、长按、单/连击)返回给你,然后就可以很方便的按照自己的需要进行处理了。具体的实现细节完全被隐藏。原创 2017-12-25 21:32:53 · 3079 阅读 · 2 评论 -
[嵌入式开发模块]系统时间SYSTEMTIME 轻量实现
美丽的暑假被叫回来干活。要我改个3年前的嵌入式程序,马上项目要用。一看程序,亲娘滴,全部业务代码全部写在main.c文件中,大段大段的复制黏贴微改,任务间通信全用的轮询标志位╮(╯▽╰)╭。有强迫症的我用一周把整个程序重构了一遍,各模块分到不同的文件中,各种封装,同步的方式全改成异步。最后一算,扣掉操作系统的代码,代码量(CODE+DATA)减少了一半,这还是实现了许多原来没实现的功能后的,比原来...原创 2017-08-02 23:30:01 · 971 阅读 · 0 评论 -
HCS12X–数据定义(如何在CodeWarrior中将数据定义到分页区)
这个文档描述了程序员要怎么样帮助HCS12X编译器来产生在数据访问上更加优化的代码。我们将讨论以下主题:分配在直接寻址区的变量分配在扩展寻址区的变量分配在banked寻址区的变量 — 使用逻辑寻址分配在banked寻址区的变量 — 使用全局寻址Banked常量分配逻辑地址 vs. 全局地址翻译 2017-09-27 10:32:19 · 2895 阅读 · 4 评论 -
理解S12(X)架构中的地址映射方案
在一个S12或S12X架构中,很有必要分清楚两种类型的内存地址:banked和non-banked。这篇文档描述了应该怎么样正确的访问某个内存地址,同时还较详细地描述了CodeWarrior的链接器是怎么把你的代码分配在这两种地址中的。理解你的应用是怎么使用内存的将有助于避免掉入常见的陷阱,还能帮助你发现哪里还有代码优化的空间。翻译 2017-09-28 18:49:08 · 6131 阅读 · 8 评论 -
HCS12X–数据访问(如何在CodeWarrior中转换逻辑地址与全局地址)
这个文档描述了程序员要怎么样帮助HCS12X编译器来产生在数据访问上更加优化的代码。我们将讨论以下主题:地址转换(从逻辑地址到全局地址)使用逻辑地址定义一个变量并使用全局地址来访问它使用混合寻址模式来访问全局变量翻译 2017-09-27 22:54:26 · 2138 阅读 · 3 评论 -
嵌入式操作系统uC/OS-II的定时器Timer使用及分析
本文对嵌入式实时操作系统uC/OS-II的定时器模块做了较为深入的分析,主要关注于模块的运作机制及用到的数据结构。为暂无时间深入了解的读者准备了简要的使用说明。注:这篇文章默认读者对uCOS-II操作系统的原理有基本的了解,最好对主要的数据结构也有一定的了解。原创 2017-07-06 17:24:38 · 11842 阅读 · 4 评论 -
istringstream 不能按空格分割字符串原因之一
天惹撸,不要把ends当做高大上的空格呀原创 2016-08-19 22:14:10 · 2244 阅读 · 0 评论 -
[嵌入式开发模块]4X4矩阵键盘扫描 基于MC9S12XEP100
本文基于之前封装好的机械按钮模块,示例实现了一个4X4矩阵键盘的模块,简述了键盘扫描的实现,同时示例了怎么把模块原先的同步返回的事件转换为异步事件通知。原创 2017-12-27 16:06:57 · 5347 阅读 · 0 评论 -
[嵌入式开发模块]环形缓冲区/循环队列 C语言实现
忙着毕设,很久没有写文章了,终于答辩完了,得了个校优秀毕业设计。毕设做的是个智能接口模块,用一周时间入门了,MC9S12XEP100的开发,又用一周时间入门了uC/OS-II嵌入式操作系统,在做毕设的过程中学到了很多,现在把一些工具发上来分享。这里分享一个自己用纯C实现的环形缓冲区。环形缓冲区有很多作用,比如嵌入式中的通信可以用环形缓冲区作为信道,一个线程往里放字节,一个线程取字节进行处理...原创 2017-06-22 15:14:26 · 15745 阅读 · 6 评论 -
[嵌入式开发模块]MC9S12XEP100 SCI(UART)驱动程序2 - 基于uCOS-II
忙着毕设,很久没有写文章了,终于答辩完了,得了个校优秀毕业设计。毕设做的是个智能接口模块,用一周时间入门了MC9S12XEP100的开发,又用一周时间入门了uC/OS-II嵌入式操作系统,在做毕设的过程中学到了很多,现在把一些工具发上来分享。首先先发一个自己封装的MC9S12XEP100的SCI模块(也就是UART模块)的驱动。这些代码参考了 Li Yuan http://blog.csd...原创 2017-06-24 11:58:23 · 2374 阅读 · 1 评论 -
[嵌入式开发模块]用于单线程的W5500控制驱动模块
上一篇中介绍了W5500的官方库中常用的函数的使用。通过这些函数,我们已经可以构建一个正常的TCP/IP应用了。但是上一篇中是一个个函数的讲,虽然是按照使用顺序,难免还是有些混乱。这一篇中,我直接给出了完整的程序框架和自己写的驱动模块,算是把上一篇中讲的整个给串了遍。原创 2018-09-07 12:19:26 · 2065 阅读 · 0 评论 -
如何加密你的MC9S12(X)设备
这篇博文完整介绍了MC9S12XEP100的加解密功能,并综合使用了之前本人写的多个模块完整全面地叙述了写出一整个示例程序的全过程,可以认为是一个最简单的按帧通信的程序示例。原创 2018-07-12 20:20:28 · 3468 阅读 · 5 评论 -
[嵌入式开发模块]通用接收状态机模块
在软件开发的过程中,只要涉及到通信,就会涉及到数据接收机的编写,通信协议虽然多种多样,但是数据包的形式确是很相似的(暂时没看到特别复杂,此模块解决不了的),为此可以把其中通用的部分抽象出来,然后就成了这个模块。原创 2018-05-29 20:22:03 · 2474 阅读 · 2 评论 -
[嵌入式开发模块]MC9S12XEP100 IIC模块 驱动程序
此为本人写的MC9S12XEP100的IIC集成电路总线的硬件驱动程序。原创 2018-05-15 20:39:36 · 1459 阅读 · 4 评论 -
[嵌入式开发模块]DS3231时钟芯片 驱动程序
此为本人写的DS3231时钟芯片的驱动程序原创 2018-05-14 18:49:03 · 16345 阅读 · 18 评论