自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小灰笔记

学习笔记,仅用于自我参考回忆!

  • 博客(1050)
  • 论坛 (1)
  • 收藏
  • 关注

原创 464_Arduino状态变化检测例程分析

全部学习汇总: https://github.com/GreyZhang/arduino_uno 其实,这个例子跟之前看过的Debounce例子还是有一丝相同的地方的。具体,可以直接在代码分析的时候说明一下。 这里,我还是按照我自己的电路修改了管脚的配置。 这里,其实就涉及到了前面提到的功能了。但是,这里使用的是一个阻塞模式的延时。其实,在实际的应用中是不实用的。而之前的例程中,这部分采用了CPU占用率更低的模式。...

2020-11-27 21:09:48 5

原创 463_Arduino Debounce例程分析

全部的学习汇总: https://github.com/GreyZhang/arduino_uno 近期,计划把Arduino里面的例子全都分析一下,看看是否有值得参考借鉴的设计。今天看了一下Debounce的例程,其实还是有一点分析的价值的。 我觉得,如果是到了消费类电子里面这种按键设计肯定是大把存在。但是,正在汽车电子里面,尤其是以控制为主的控制器设计里面这部分还是很少的。但是技术其实是想通的,汽车电子里面也有一些其他的信号处理会有Debounc...

2020-11-26 21:01:32 20

原创 462_Arduino LED不用delay功能的闪烁例程分析

全部学习汇总: https://github.com/GreyZhang/arduino_uno 其实,这是通用的Arduino例程,只是我正好用的UNO这个版本进行的调试以及分析。暂且,这部分的学习笔记归档放在这个分类中。 其实,Arduino的很多例程本身的复杂度都是很低的,甚至说里面的信息量是不大的。但是,但凡有一点与众不同的地方都值得我们去学习小结一下。 在Arduino的例程当中,有一个不需要delay的LED闪烁例程。...

2020-11-25 21:01:47 12

原创 461_几个不同的ctags信息梳理

全部学习汇总: https://github.com/GreyZhang/editors_skills 近些年在编辑器上花费的时间太多了,尤其是emacs。灵活是好的,很自由。但是,太灵活了之后,也会出现一些选择困难症。尤其是,默认的软件包中不给我们那么多的选择的时候,哪怕是找到正确的那一个都是麻烦的。 我在几个不同的电脑上遇到过ctags的问题了,windows上逐渐积累了一堆可执行文件和动态链接库,这样基本倒还可以应对了。一向是容易的Linux,...

2020-11-24 21:10:37 44

原创 460_J1939请求报文的应答

全部学习汇总: https://github.com/GreyZhang/J1939_basic 前面大概看了J1939的请求报文,其实就是请求一个PGN的信息。今天,把手里的例程基本梳理了一下。感觉大概调试了一下,基本上看明白了大概的用法。只是,例程似乎只是用于基础功能的演示,并没有严格遵循相应PGN的定义。 这里,先大概了解一下发送机转速PGN。 其实,这个是已经在文档中定义过了的PGN。如果,实际的应用肯定得按照这个来。...

2020-11-22 21:05:07 19

原创 459_J1939请求报文格式分析与代码印证

全部学习汇总: https://github.com/GreyZhang/J1939_basic 这次来小结一下请求报文的发送,因为响应部分暂时有一点点模糊没看明白,还需要补充一点文档信息。 关于请求报文,我参考了恒润的一份PPT中的一页,这个在很多文库能够看得到。具体部分据图如下: 从这份PPT中的信息看,其实请求报文还是很简单的一个东西。至少,请求的动作还是很简单的。这是一个固定的报文格式,填充一个PGN的信息即可。而请求...

2020-11-21 11:09:50 17

原创 458_emacs projectile中使用etags

全部学习汇总: https://github.com/GreyZhang/J1939_basic 在J1939的协议栈中存在一个队列的收发机制,其中接收队列的实现之前在做ISR的部分代码分析的时候已经看过接口上的交互。对于这个队列实现,其实应该有一个具体的实现机制。 关于队列的机制,在学习数据结构的时候接触过队列的实现,这个基本上是基于链表来实现的。但是,链表的实现是需要基于内存的动态分配来实现的。在嵌入式系统中,尤其是涉及到高实时性和可靠性相关的系...

2020-11-20 20:01:18 9

原创 457_J1939中普通报文的队列接收实现机制

全部学习汇总: https://github.com/GreyZhang/J1939_basic 在J1939的协议栈中存在一个队列的收发机制,其中接收队列的实现之前在做ISR的部分代码分析的时候已经看过接口上的交互。对于这个队列实现,其实应该有一个具体的实现机制。 关于队列的机制,在学习数据结构的时候接触过队列的实现,这个基本上是基于链表来实现的。但是,链表的实现是需要基于内存的动态分配来实现的。在嵌入式系统中,尤其是涉及到高实时性和可靠性相关的系...

2020-11-19 21:27:45 11

原创 456_J1939中普通报文的队列接收

全部学习汇总: https://github.com/GreyZhang/J1939_basic 之前研究Arduino的时候,看过了Arduino开源社区中别人对ECAN使用的时候使用了队列的收发。全都是软件实现,没有使用硬件的模式。手里的这套J1939的代码也有这么一个类似的功能。 接下来,看看手里这套代码的处理。 关键代码都在注释上面,其实,下面的部分也已经不在同一个代码块。正好这个函数还剩下这么一点没做分析,一起给标注...

2020-11-18 08:08:18 51

原创 455_J1939信息接收接口分析

全部学习汇总: https://github.com/GreyZhang/J1939_basic 之前,大概分析了J1939_ISR,要想明确弄清楚J1939的收发的机理需要继续分析两个CAN的收发接口。这里,先尝试分析一下CAN消息的接收功能。 首先需要注意的是,这个函数用了static,因此使用的范围会有一些限制。通常是不会出一个文件,尤其是其在C文件中定义的。后面的代码,出现了好几重的预处理,目前我的emacs配置下需要层层查看。万不得已,...

2020-11-17 09:45:46 21

原创 454_J1939中断模式下的中断服务子程序分析

全部学习汇总: https://github.com/GreyZhang/J1939_basic 经过之前的几次代码分析,基本上知道了广播多帧报文的实现是一个什么过程了。也基本上知道了命令地址实现的基本流程和方法了。 我现在接触的3份J1939的代码例程中,有一份是使用POLL模式,而最近的两份代码则是使用的中断模式。虽然,大概的功能已经分析过了,但是中断ISR还是没有看过究竟是如何用的。而这部分应该是这份代码在不同平台上移植的关键。...

2020-11-16 10:26:50 14

原创 453_J1939命令地址PGN 65240(FED8)的使用

全部学习笔记汇总: https://github.com/GreyZhang/J1939_basic 前面了解了一下广播多帧报文的实现分析,当时发送了一个0xFED8(65240)PGN的信息。但是,这种数据的组包顺序以及规则没有弄清楚。 我没有系统阅读过全部的J1939的资料,因此直接借助了网络资源。找到了一份文件,对此的解释如下: 这一组报文的发送必须是通过BAM来实现,因此这是之前我们看到的功能的实现原因。之前的报文发送...

2020-11-15 13:55:51 32

原创 452_J1939广播多帧报文的例程分析

全部学习汇总: https://github.com/GreyZhang/J1939_basic 借助一个简单的例子来看一下J1939广播多帧报文的发送实现。为什么不叫多帧报文而叫广播多帧报文呢?因为在J1939中存在两种多帧报文的发送模式,一个是广播另外一个是点对点的。而两个流程是不同的。 上面的这个流程图就是J1939的广播多帧报文的实现,这个是我从Vector的一份文件中截取出来的。从上面可以看得出,大概的流程是先发送一帧TP.CM_BAM...

2020-11-14 16:20:22 51

原创 451_J1939地址声明超时确认处理代码分析

全部学习汇总: https://github.com/GreyZhang/J1939_basic 前面做了一个地址声明初始化的功能分析,但是这个动作触发之后还应该有一个确认的过程。其中,声明不成功的处理还是容易的,因为会直接收到一条报文。如果是声明成功的话,需要等到一定的时间,在相应时间内没有冲突报文则可以取得相应的地址。 这是超时处理确认的处理,关键点还是在上面的这个状态的变化。需要确认这个状态是否被清零了,因为在初始化的时候这个状态是置位的。...

2020-11-13 08:24:22 19

原创 450_J1939地址声明函数的调用处理分析

全部学习汇总: https://github.com/GreyZhang/J1939_basic J1939地址声明的接口功能之前基本上分析过了,这一次看看在整个我看到的例程中这个接口究竟是如何使用的。毕竟,这个接口还是有两种不同的使用模式的。 这个接口在整个工程里面被调用的次数不是很多,我搜索了全部的工程如下: 最前面两个还有最后两个是没有必要关注的,这都是生成的文件或者辅助的工程文件。H文件中的就是一个声明,也不需要看。接...

2020-11-12 08:19:02 14

原创 449_spacemacs函数相关的几个实用操作小结

全部学习汇总: https://github.com/GreyZhang/editors_skills 工欲善其事必先利其器,我觉得作为一个程序员甚至是其他领域的工程师有时候还是有必要反复打造磨炼自己的编辑器技能。尤其是天天跟文本编辑打交道的,能够有一套通用的且高效的编辑技巧很重要。 我自己选择的套路是vim,这也是被很多人证明过的高级的编辑技巧。加上我使用emacs,各种辅助的功能也可以给我一定的效率提升。说回到我自己,键盘敲击的手速并不是很快,因...

2020-11-11 11:12:36 19

原创 448_J1939地址声明设计代码阅读分析

全部学习汇总: https://github.com/GreyZhang/J1939_basic 前面看了一个初始化的接口,发现其实跟协议栈相关的更多的还是最后的一个队地址声明接口的调用。 这个函数是一个静态函数。 通过这个简单的细节就可以知道,这个是一个协议栈内部的一个功能,也就是跟协议栈的协议实现有着很大的关联度。好在,看了一下这个函数的代码量之后让我舒了一口气。这个函数的实现代码量还是很小的。...

2020-11-09 22:02:19 14

原创 447_J1939初始化代码分析

全部学习汇总: https://github.com/GreyZhang/J1939_basic看了一下我手中的这一份J1939的代码其实代码量不大,看起来我可以直接做一个详细的代码分析。这个就是初始化的第一个接口,今天就完成这个接口的分析。 其实这个主要是一些状态和设备的信息初始化,在不同平台有一些工作可能可以通过其他的方式来实现。 当前我看的软件中,上面的设计可能有一些啰嗦。不过,上面这个考虑到了不同传入参数的处理。 这些其实还是CAN驱...

2020-11-07 10:17:26 46

原创 446_PIC18F系列MCU的中断实现

全部学习汇总: https://github.com/GreyZhang/PIC18F 最近在PICF18的平台上熟悉J1939的协议,第一个例子算是调试完了,使用的最简单的polling模式来实现的。但是如果想要让J1939的协议栈处理的能力更好,实时性更好且设计更加简单一些,需要使用中断。 这样,我需要的中断是CAN通信的收发功能。 看一下相关的文档: 正好,我用到的两个MCU兼容性上基本上是一致的,中...

2020-11-05 07:22:13 35

原创 445_J1939地址声明报文格式

全部学习汇总: https://github.com/GreyZhang/J1939_basic 上次做了地址声明的部分分析,当时出现了一份报文交互记录。当时只注意了源地址和目标地址,没有注意到数据场。今天没事儿的时候突然间脑子里想起了这么一回事儿,当时的数据场到底是一个什么信息呢? 我找到了前面的报文记录: 首先,在Vector的一份文档中有如下的描述。 如果地址声明的时候出现了地址冲突,名字具有更高...

2020-11-04 20:51:02 19

原创 444_J1939源地址冲突时候的协议栈处理行为分析

全部的学习汇总: https://github.com/GreyZhang/J1939_basic 之前测试用的两个板子,测试的过程中为了区分增加了一个定义:板子定义为A(地址0x80),B的地址为0x81。 现在,我手里的B板子已经进行了一次地址声明且测试过了。现在,尝试做一下测试,修改A板的程序让它的地址也设置为0x81,这样等我的A板上电运行进行地址声明的时候应该会出现冲突。 简单的修改如下: 软件修...

2020-11-03 21:25:34 17

原创 443_J1939源地址与目标地址的使用和判断

全部的学习汇总: https://github.com/GreyZhang/J1939_basic 前面做了官方例程的测试,两个板子能够通过按键分别控制对方的LED的亮灭。现在,做一个简单的修改: 把目标地址改成130,也就是0x82。这样,通过这个板子按键的时候,将会发送报文到目标地址0x82。姑且把这个板子定义为A(地址0x80),B的地址为0x81。 修改之后,做了两个测试。第一个是使用A的按键触发请求,结果B的灯本次没...

2020-11-02 20:28:26 67

原创 442_J1939 PDU Format判断

全部学习汇总: https://github.com/GreyZhang/J1939_basic 如果看到细微之处,CAN通信似乎从来都不是那么简单。尤其是到了协议栈的环节,万千变化最后还得回归到枯燥的文档,的确是不容易啃透。我自己尝试了多次J1939的学习,但是大部分都是处于理论性的材料学习,而这种学习基本上也是看完后面的前面的就会忘记。 正好手头有两个PIC18Fxxxx的开发板,虽然MCU的型号不同但是至少是架构一致而且全都带有一个ECAN模块...

2020-11-01 09:02:07 59

原创 441_MPLAB X中导入MPLAB工程

全部学习汇总: https://github.com/GreyZhang/PIC18F 今天安装了MPLAB X,感觉使用体验的确是不错。不过,之前有些MPLAB的工程放弃可惜,一点点新建工程重新加文件麻烦。简单操作了一下GUI,发现了一个导入旧工程的方法,测试小结一下。 首先,准备工程如下: 专门做了一下备份。 启动MPLAB X,点击如下的菜单。 选择刚刚准备的工程中的工程文件。...

2020-10-31 08:44:15 34

原创 440_MPLAB X中进行部分寄存器配置并生成代码

全部的学习汇总:https://github.com/GreyZhang/PIC18F 前几天使用了MPLAB工具进行了一些小测试,因为我买了一个板子,给出的例程就是这个工具实现的。在软件调试中,遇到了各种各样的问题,感觉上可能是工具太老的原因。于是去官方网站找了一下相关的MCU,查看了相关的资料。没想到这里还提供了一个免费的IDE,支持大量的MCU开发。顺利下载下来,果真我遇到的一些问题消失了。 不过,在使用MPLAB的时候有些寄存器的配置通过位配...

2020-10-30 20:53:53 455

原创 439_PICF184580 实现串口printf

全部学习汇总: https://github.com/GreyZhang/PIC18F 嵌入式软件调试中如果有一个串口会非常方便,一个printf几乎能够实现全部的调试功能。当然,这个得建立在你有一定的软硬件调试功底的前提下。 本来,我想把我之前用的一个pritnf模块移植到现在的工程。但是简单搜索一下,发现PIC平台上的printf其实直接使用标准库即可,只需要重新路由一下putch。 具体的实现如下: ...

2020-10-29 20:42:26 24

原创 438_PICF184580 CAN接收例程分析

全部学习汇总: https://github.com/GreyZhang/PIC18F 看了一个CAN接收的例程,本来还打算做一个最终的调试,把我之前的部分CAN代码也一起放进来。后来想想,不能够一直凌乱下去。先做个简单的分析,后面创建一个工程开始全新的功能调试了。 代码的排版等格式我大概用工具进行了一个处理,现在勉强有更好一点的可读性了。 加了一部分我修改过的代码了,不过不打算继续调试了。不过,还是增加了一个我之前修改过的一...

2020-10-28 00:40:33 21

原创 437_PIC18F4580 MCU资源梳理

全部学习汇总: https://github.com/GreyZhang/PIC18F 这两天花了一些时间调试这个MCU开发板上的程序,非常窝火,遇到了一个非常不专业的卖家给了大量不好用的东西。结果,一头扎到了软件调试中。其实,说起来,嵌入式学习的路线这样是不对的。还是要回到正确的路线上来。 大概的开发工具以及基础的环境其实已经验证过了,这很好。但是,MCU的基础信息暂时还是没有看过的。今天,针对软件需要关注的地方专门做一个梳理。...

2020-10-27 20:21:57 22

原创 436_PIC18F4580 CAN模块初步

全部学习汇总: https://github.com/GreyZhang/PIC18F 先看一下我手中这个MCU的管脚定义: 看上去,管脚功能相对来说比较单一。 结合上面的文档信息,RB2可以在模式设置的时候自动处理掉,而RB3则必须要进行功能配置。 以上是管脚配置的一些说明。因此,我自己修改代码的时候采用了上面的配置: 本来还想在原来的代码基础上做一下调整修改,后来考虑到都...

2020-10-26 20:10:29 32

原创 435_PIC18F4580 stdint数据类型支持

全部学习汇总:https://github.com/GreyZhang/PIC18F 之前玩Arduino的时候,比较方便的就是支持stdint.h中的各种数据类型。这样,在进行很多软件移植调试的时候都非常方便。PIC18Fxx,我用的开发环境中似乎这个东西是不支持的。我搜索了一下安装的目录,如下: 看起来,应该还有一个32系列的支持这样的功能。 如此,直接仿照Arduino来一份。 测试其字节长度:...

2020-10-25 09:32:50 23

原创 434_PIC18F4580数码管动态显示例程分析与修改

全部学习汇总: https://github.com/GreyZhang/PIC18F 分析一个动态数码管的例程,预感可能会有很多需要改的地方。 预测很准确,因为我简单编译了例程烧写之后完全没看出实现了一个什么效果。看起来,得分析下代码,看看他的意图,然后我做个简单实现算是自我学习锻炼了。 代码看上去,相对来说不是很麻烦。我怀疑错误点很可能又是在段选上,因为之前已经遇到过一次了。 再次分析,看上去实现实现一...

2020-10-24 10:28:57 17

原创 433_PIC18F4580串口接收例程分析

全部学习汇总: https://github.com/GreyZhang/PIC18F 今天来看一下串口的接收功能,本来还想顺带练习一下emacs,不过第二次遇到了emacs文件占用与MPLAB冲突导致没法编译的诡异现象。暂且放弃emacs练习的想法了,毕竟VS Code也还不错。 上来,还是得先处理一些烂代码,先保证软件能够正常运行。为此,做如下定制: 管脚寄存器映射处理,这次偷懒了,因为我觉得VS Code下面的vim插件...

2020-10-23 21:18:17 29

原创 432_PIC18F4580串口通信例程分析

全部学习汇总: https://github.com/GreyZhang/PIC18F 这次的开发板购买经验的确是很失败,中间需要自己修改的东西太多了。不过也好,塞翁失马焉知非福,中间或许我能够学习的东西更加深入了也说不定。除此之外,修改代码的过程也算是emacs练习的一个好机会了。 一看这段代码,老一套的问题。我注释掉了23行,代码进行了重新排版,其他的暂且不提了,出门左转有雷同笔记。 LED的寄存器修改,肯定少不了得处理。...

2020-10-22 19:49:55 34

原创 431_PIC18F4580流水灯例程调试

全部学习汇总: https://github.com/GreyZhang/PIC18F这次买的这个板子以及配套的软件真是让我觉得不知如何评价了,就没几个能用的软件。好在烧写了之后没跑飞是真的。 找到了一个流水灯的例程,先烧写了一把,只有2个LED在闪烁。真的是一点都不意外。我格式化之后的代码状态如下: 初始化重复调用、没用的串口、错误的看门狗注释自然还是老一套。 折下来,类似的代码设计思路还OK吧,但是估计LED的寄存...

2020-10-21 20:33:11 22

原创 430_PIC18F4580串口发送例程调试与测试

全部学习汇总: https://github.com/GreyZhang/PIC18F 这次某宝购物的体验真的是比较差,买了一个板子没想到大部分代码都有问题。原理图画的标识符乱七八糟不说,代码很多都有问题的。前面修复了诸如LED这样的最初步的软件,后来测试串口发现串口依然是不工作的。 经过文档查看分析,我发现代码中的配置是直接来自文档。然而,文档中描述的晶振跟这个板子上的晶振不同。一个是16M,而板子上是4M。经过一系列修改,终于该出来了一个可以正常...

2020-10-20 20:08:12 26

原创 429_PIC18F4580使用MPLAB配置部分驱动

全部学习汇总: https://github.com/GreyZhang/PIC18F 在最初接触的文档中看到过关于这部分的配置,配置的启动方式如下: 启动后的界面如下: 弹出的对话框,去掉打勾即可进行编辑修改。看文字描述,应该是勾选了之后才会在软件中起作用。不过,我自己尝试修改的时候却发现无论是否勾选生成的HEX都没有什么变化。不过,我自己生成HEX的方式或许是不正确的,因此出现了如下的提示: 这...

2020-10-19 21:42:44 24

原创 428_PIC18F4580驱动共阳数码管

全部学习汇总: https://github.com/GreyZhang/PIC18F 今天阅读一份共阳极数码管驱动的例程,顺便按照我自己的理解进行部分修改。 首先看看相关原理图: 其实,制图的时候采用PORT命名会更好一点。因为,这样不会像上面的原理图一样出现把输出操作的端口描述成输入的情况。 上面这部分代码,其实是可以规范一下的。同时看得到的是,数码管的小数点没有设计。 开始...

2020-10-18 09:16:51 52

原创 427_PIC18F4580 LED闪烁例程品读

全部学习汇总: https://github.com/GreyZhang/PIC18F 既然代码都读了,还是留点学习笔记吧! 我在某宝上弄了一个开发板,附带了不少例程代码。令我惊奇的是第一个LED闪烁就没调试成功,后来,我自己改好了。结果,我发现了第二份LED闪灯程序。做个简单的代码分析: 几个问题点的关注:函数重复调用存在,36行; 串口初始化没用,34行; 看门狗相关代码注释错误,其实没开看门狗。40行; 既然没...

2020-10-17 12:28:33 20

原创 426_PIC18F4580实现LED闪烁

全部学习汇总:https://github.com/GreyZhang/PIC18F 说起来,LED闪烁这样的功能的确是太入门了级别了。或许由于简单,这个在一定程度上是嵌入式的hello world。有很多嵌入式工程师自嘲说最是点灯工程师或许也是因为这个简单,因此用以自嘲说自己的技术初级。 本来,不打算做这个初级的小结了。但是,这次有点小故事。我从某宝上买了一个开发板,PIC18F4580的MCU,上面带着4颗LED。提供的demo里面,有LED闪烁...

2020-10-16 22:09:45 30

原创 425_PICkit2烧写PIC18F4580 MCU

全部学习汇总: https://github.com/GreyZhang/PIC18F 手里两块PIC18Fxx的板子,一直也没有拿出来用过、学习过,想来真是有一点浪费。正好趁着最近有一点点自由的时间,找出来简单玩玩。 开始接触一个新的嵌入式平台,还是老一套。首先看文档做一点基本功,接着就是开发工具链的确认,来一个点灯程序的烧录。这一步过了之后,后面就是自由hack了。 MPLAB的安装其实还算是顺利,一个工程打开清空编译也还顺利...

2020-10-15 22:06:09 43

空空如也

grey_csdn的留言板

发表于 2020-01-02 最后回复 2020-05-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除