
嵌入式
文章平均质量分 64
夜歌坤拓
实践是检验真理的唯一标准。
展开
-
基于车载以太网的OTA升级
22年4月份接到一个订单:广汽乘用车M8,OTA升级的开发。OTA(Over-the-Air Technology),理解的话就是:无线传输技术。本次的开发,运用到的知识包括:TCP/IP协议,DoIP协议,UDS协议,开发语言为C语言,开发环境为Linux,gcc编译,Linux环境下调试,Make文件等等。原创 2022-12-13 14:15:30 · 4665 阅读 · 12 评论 -
毕业三载,回顾反思,继往开来
智慧农业原创 2022-10-28 11:04:09 · 390 阅读 · 6 评论 -
linux下的脚本文件编写
linux下脚本的编写原创 2022-06-29 18:34:41 · 3886 阅读 · 0 评论 -
模拟盘项目bug解决之路
最近一直挺忙的,项目临近交付,上位机那边反馈给我两个bug。1.当上位机发错信息时,我这边的通信板就不能正常工作了。2.当上位机宕机,上位机突然断电时,再想进行连接时就会连接不到。上诉的两个bug当我这边复位,重新启动之后是可以解决的。讲真上位机告诉我这两个bug的时候,我是很无语的,首先都不是我这边程序逻辑直接出问题,其次都是上位机那边出问题了,导致我这边无法正常工作,而且只要重新启动就可以消除这些问题了。我能怎么办,我也很绝望。心里面的职业素养告诉自己,我这边确实也有问题,程序的容错原创 2021-11-27 17:00:36 · 1786 阅读 · 0 评论 -
int类型千百面
(1) int A;int 类型变量A,占4字节。(2) int *A;int类型指针变量A,占4字节。(3) int A[n];int类型的数组A,占4*n字节。(4) (int *)A[n];int类型的指针数组A,本质是数组,数组里面存的都是int类型的指针。占4*n字节。(5) int (*A)[n];指向二维数组的int类型的指针变量A,指向拥有n个元素的数组,占4个字节。通常用于二维数组的指向问题,不过这个不常用,反正我工作一年多了,基本没用过。举例:原创 2021-10-14 14:54:19 · 731 阅读 · 0 评论 -
排序算法C代码实现
一.插入排序//插入排序void InsertSort(int *a, int n){ int i = 0; for(i = 0; i < n - 1; i++) { int end = i; //记录有序序列的最后一个元素 int tmp = a[end + 1]; //待插入的元素 while (end > -1) { if(tmp < a[end]).原创 2021-10-13 15:19:54 · 117 阅读 · 0 评论 -
C语言变量命名规则
(一)一般规则(1) 望文知意(2) 长度合适(3) 多词写法(4) 避免数字(5) 作用域符(二) 标识符命名规则(6) 命名模型(7) 前缀规则原创 2021-10-09 11:31:18 · 1094 阅读 · 0 评论 -
C语言编码风格
编码规则 1 函数说明:编辑规则 2 留出空行:编辑规则 3 删除代码编辑规则 4 提倡风格编辑规则 5 参数分段参编辑规则 6 正反函数命名法编辑规则 7 确定优先级编辑规则 8 复合表达式相关编辑规则 9 尽量避免否定运算编辑规则 10 void参数运用...原创 2021-09-24 15:52:48 · 298 阅读 · 0 评论 -
模拟盘项目收尾总结
前言: 这个项目上周三就算是完成了,之前几天在做最后的测试。也是突然想到,编写程序和测试程序不能是同一个人。若是同一个人的话,总是会顺着自己已经写好的思路进行测试,一个固定得的路线,另一个人测试的话,就会不同的思路去进行测试,检验等。 我是去年6六月份毕业,然后进了一家智能驾驶公司,在那里待了3个月,总是出差,就辞职了。中间停下了一段时间,在今年1月份来到了现在的这家公司,这家也是跟驾驶相关的,不过是火车,哈哈。当然虽然,换工作了,我的大方向还是不变的,搞得还是嵌入式开发...原创 2021-09-08 17:18:28 · 178 阅读 · 0 评论 -
STM32F4系列CAN总线频率计算法
一.找到外部晶振 外部晶振相当于整个系统,板子的心脏。晶振频率的大小需要从板子找到晶振器,在其型号上有晶振频率的大小,如图这个晶振器的频率为25MHz。二. 代码进行配置,并得出总线频率/******************************************************************************************************************************************...原创 2021-08-24 13:22:19 · 5292 阅读 · 4 评论 -
嵌入式知识盲区扫除计划(永久更新)
(1)系统时钟 Systick 与 专用定时器 Timer系统时钟,用于操作体统,它是系统的时间计时器,系统根据它得到时间值,来完成某些功能。它具有公用性。比如用于轮询操作的实现。专用定时器,它通常用于和APB,APH相关的地方,用于某些需要计时的地方。它具有专用性,哪一个需要,哪一个就根据需要构成一个专用定时器。最后,它们连个是没有关系的,是相互独立的。......原创 2021-08-10 16:47:36 · 547 阅读 · 0 评论 -
第一次负责公司一个项目的开发,阶段性总结
一 项目背景 项目名称是模拟盘,其中主控使用的是STM32F407ZGT6,使用W5300网卡,两种通信方式:tcp_modbus(ip协议) 和 CAN通信。 从机,就是主控的下属设备。使用的芯片相同,主要就是引脚的输入输出,和CAN实现与主控之间的通信。二 问题分析 第一次负责一个项目的,有紧张,更多的还是欣喜。来公司半年,终于要单独负责一个项目的开发了,这应该是我成长的一个体现。之前干的是某个系统中的某一块功能。从接手这个项目到今天,已经快一个...原创 2021-08-06 09:47:27 · 517 阅读 · 0 评论 -
嵌入式开发问题集锦(永久更新)
一 ,STM32F4xx_HAL_Driver是固件库,STM32F4xx_StdPeriph_Driver是标准库。它们所包含的功能是相同的,只是实现功能的方式不同,在一个工程里面只能使用一种库。原创 2021-07-08 14:20:54 · 1623 阅读 · 0 评论 -
模拟寄存器开发实例总结
一. 开发背景(1)模拟仿真仪表,连锁设备完布置完成后,外部铁路段,不一定同步完成,因此不能进行连锁设备的检测,这降低了,作业效率。因此有了模拟仿真器,它可以模拟铁路段上的设备,设备在程序中,体现为不同的寄存器,及寄存器上的不同位。这里程序编写虚拟寄存器,来达到仿真的效果。系统图为:二. 仿真器部分程序(1)写入寄存器操作,这里补充说明两个函数。memcpy(void *dst, void *data, int count); //特点是可以使用于任何类型的数据strcpy(char *dst,原创 2021-06-29 13:31:33 · 940 阅读 · 0 评论 -
ping指令使用开发总结
一. 吐槽!!!上个星期,还好使的板子,好好的程序,好好的ping通。今天,就 不 好 使 了!!!我能怎么办,我也很绝望!!!我 @#@#¥#%¥!%E%……都快疯了!最后换了个板子,终于又ping通了,赶紧写了个总结,记录正确的方法。二. ping 指令使用背景整个系统由三部分组成,铁路段信息采集及制动部分,网络传输的通信板,信息综合处理的核心板。通信版拥有两张W5100网卡,核心板是2X2冗余,它也有两张网卡,也是W5100网卡。(1)首先,板子和网线的连接方式如下,白桔色,白绿色在上,就是原创 2021-06-21 13:59:15 · 403 阅读 · 0 评论 -
SRAM驱动开发实例
一 我写博客的原因,应该说是有两点吧(1)一点是对阶段性工作的总结,虽说技术创新,技术创新,但在创新之前有一个技术积累的过程,写博客,便于总结,回忆。(2)另一点是受到带我的师傅的影响,他是公司的技术主管,他提到一个词让我感触很大,“开源”。他教我学会了很多东西,所以我写的文章,上传的资源都是免费的,希望能够对有兴趣者,及同行有所帮助。二 驱动开发流程新来一个项目,有了新的需求,上司给你分配了新的任务,给了你一块板子,告诉了你需求,然后让你完成驱动程序的部分。(1)接到一块新的板子,不要立刻上手原创 2021-06-16 11:16:21 · 685 阅读 · 0 评论 -
UDP组播开发测试实例
一 前言(1)负责项目中组播开发测试工作。期间由于缺乏设备的原因,中间搁置了好久。直到昨天下午临近下班,终于,完成udp组播整个的开发测试工作。二 开发过程(1)首先从实现udp协议说起。udp协议使用的结构体如下:typedef struct socketaddr { uint16_t sin_Family; //协议族 uint16_t sin_port; //端口号 uint32_t sin_addr;/*mac[6] / udp/tcp port[2] + ip[4]*/}S原创 2021-06-10 10:43:17 · 1709 阅读 · 0 评论 -
驱动开发常见开发单词三
assigned ------------ 分配的、指定的enetity ---------------- 实物、实体、本质restore --------------- 重建、归还discard --------------- 抛弃、丢掉reference ------------ 参考、提到、提供···参考、提及transmitted ---------- 传输、传送oversampling ------- 过采样fractional ------------- 部分的、零碎的baud原创 2021-06-04 11:24:18 · 191 阅读 · 0 评论 -
tcp_modbus测试开发实例
一. 测试背景(1)开发项目名称:地面控制平台。(2)地面控制平台是一个铁路,列车综合控制系统。整个系统的逻辑原理是,铁路分为很多段,铁路段拥有很多传感器,采集相关信息(例:列车位置信息等),通过tcp_modbus协议进行信息传输,地面控制平台接收信息,处理信息,下达指令,铁路段接收指令,执行指令。二. 测试步骤(1)把测试用的电脑与待测试系统,设置在同一个网段。(2)使用ping指令,检测电脑与待测试系统能否联通。要熟练使用ping指令,它是网络开发,测试常用的,且非常实用的一个检测指令。p原创 2021-05-27 10:37:53 · 833 阅读 · 0 评论 -
GPIO常用操作函数
(1)void GPIO_DeInit(GPIO_TypeDef* GPIOx)功能:将GPIOx外设寄存器初始化为默认值注释:判断GPIOx具体为哪个端口,再通过操作RCC_APB2RSTR(APB2外设复位寄存器)对其寄存器进行复位例:GPIO_DeInit(GPIOA);(2)void GPIO_AFIODeInit(void)功能:将复用功能(重映射与EXTI设置)重设为默认值注释:通过操作RCC_APB2RSTR(APB2外设复位寄存器)对其寄存器进行复位例:GPIO_AFIODe原创 2021-05-21 14:16:34 · 7370 阅读 · 0 评论 -
串口驱动开发总结
一 串口驱动开发总结(1)这个项目的开发已经过去了几个月了,突然想写一篇总结文档,尽量回忆。仔细回想一下要考虑的东西,用到的东西很多。二 串口驱动开发过程(1)串口实物,参考 rs 232. 它是一个9孔的通信方式。(2)在进行编码之前,要先尽可能多的了解串口通信方式,记得它有一个很特殊的一点就是它的信息的传输是按bit传输,即以此只能传输一个bit, 不能像以太网口那样,一次传输一包的数据。(3)我用到的芯片是STM32F4XXX处理器,所以在进行编程前,先看它的开发手册,注意配置串口都需要哪些原创 2021-05-19 17:47:55 · 864 阅读 · 0 评论