15k 13 分钟

# 起源 I2C 支持设备之间短距离通信,用于处理器和外设之间,只需要两根线来完成信息交互. I2C 出现于飞利浦公司,开始只允许 100kHz, 7-bit 标准地址。直到 1992 年,I2C 第一个公共规范,增加了 400kHz 的快速模式和 10-bit 扩展地址. 在 I2C 的基础上,1995 年 Intel 提出了 SMBus 用于低速设备通信,SMBus 把时钟频率限制在 10KHz~100KHz, 但目前的 I2C 可以支持 0KHz~5MHz 的外设: 普通模式 100KHz 快速模式 (Fm) 400KHz 快速模式 +(Fm+) 1MHz 高速模式 (Hs)...
3.5k 3 分钟

大道五十,天衍四十九,人遁其一! # 写在前面 作为一个四非二本末流师范院校的工科专业的学生,给大厂投简历的都不如树叶落水,一丝波纹都没有. 大厂 HR 们一看院校就直接 pass 了,除非走内推,像我着这种大厂基本就没什么希望. 从 9 月 15 号开始投,直到现在还是 0 offer, 这还是我第一次面试 (╯_╰). 就感叹一下,下面的经历,诸位就当看个笑话就好. # 面试经历 # hr 面 hr 给我打电话的时候,我正在做 智能涂鸦 的性格测试,做完之后发现有一个未接电话没当回事。当时以为是快递电话,因为前几天中通丢件了,说是要给我下午 5 点会打电话,当时差不多 5 点...
2.6k 2 分钟

大道五十,天衍四十九,人遁其一! # 写在前面 智能涂鸦整体感觉还好,没有想象中的难。涉及到 linux 基础,c 语言,makefile 方向的知识 # Linux 方向 linux 这一块考了 一个 malloc 是系统那部分提供的方法,一个 linux 端口占用查看 这一方面我的知识比较欠缺,端口查看是 netstat -tunlp , malloc 的提供方盲猜了个 glibc , 事实也就是这个。当时是想 malloc 也是个库函数,八成和 GUN 有关系。还真就是 gun libraries c . PS: glibc 是 linux 下面 c 标准库的实现,即 GNU C...
5.9k 5 分钟

# 写在前面 整体来说,上海中电的技术面让我感觉起来很舒服,很和蔼而且也给了我很多我项目上的建议,还帮分析我向做的远程遥控小车的方案,就很 nice, 要是没有更好的选择基本时就这家了,. # 面试经历 因为是第二次面试,所以心态也放缓了一些,问了两个项目,一个是智能车,一个是无线智能节点。问了智能车,为什么使用这款摄像头、摄像头采用的协议 sccb, 车辆采用的 rt-thread 的线程安排,为什么要使用 sobel 算子,IIC 多主机请求的仲裁方式,我主要负责那一块。整体上答的还行,还是很愉快的. 然后是无线节点,这个项目问了 ADS1292,...
5.7k 5 分钟

ps: 本文图片来自 leetcode 线性结构 - 双链表 # 简介 上篇文章说过单链表. 单链表中的节点具有 数据域和指针域,常见基本形式为 充当数据域的 value 字段 和 充当指针域的 next 引用字段。节点通过引用字段 有序链接,称为链表 一个数据结构的出现,肯定会有其变式,用于优化原先数据结构的不足. 双链表的出现也是如此,双链表解决了链表不可逆向查找的问题. # 定义 双链表既为单链表的变式,其工作方式必然也与单链表相似。但变式毕竟是变式,还是会有不同的地方. 双链表 比单链表多出了 一个引用字段 prev . 有了这个字段,我们就可以找到当前节点的...
5.3k 5 分钟

# 概述 计算机中的线性结构有两种方法实现,第一种就是喜闻乐见的数组形式。第二种则是链式结构. 与数组相比链式结构可以使用碎片的内存块来实现存储。常简逻辑形式如下: 如图所示链表中的每一个元素都是一个单独的对象,每个对象之间通过指针 (引用) 的方式相连接. 这种连接方式使得,链表的大小位动态的可以随时添加和减少 (在存在 MMU 的计算机中); 也是因为这种链接方式,链表丧失了数组的常数级数据访问的速度. 链表存在两种类型:单链表和双链表。上面的就是单链表的例子,下面的则为双链表 与单链表相比,双链表多了一个可以逆向查找的操作,以存储空间为代价解决了单链表不能逆向查找的问题 #...
688 1 分钟

# ARM Compiler 6 Keil V5 默认的编译器 是 ARM 自家的 ARM Compiler Version 5 (下面称为 AC5), 编译速度是很大的问题,不过编译出来的大小还是可以让人满意的. 个人觉得 IAR 除了编译速度快,其实和 keil 差不多. 但是现在 ARM Compiler Version 6 (下面称为 AC6) 的出现使得 Keil 的编译速度大幅上升. 但是 从 AC5 切换到 AC6 并不是无缝切合的,需要进行一些配置. 我会在这篇博客记录,我 从 AC5 切换到 AC6 出现过的问题,也方便诸位小伙伴查阅. # Keil 如何抛弃 AC6 在...
3.7k 3 分钟

# 写在前面 PS: 图床出问题了,图片会有些糊,新浪直接上传图像有很大失真,等大佬维护好图床之后,或者我找到新图床后,再去更新一下这里的图片 电赛延期了,虽然我不觉的今年的控制类题会是网上说的什么球形机器人,不过我也对控制题不怎么感兴趣 刘哥说了要做,那就做呗. 第一次说延期的时候打算直接拿 32 做球形机器人,现在开赛遥遥无期,就先学学 TI 的 DSP , 他们说这个搞电机控制非常好. 原本是想让我拿一块 TI 的 TMS320F28553 学的,结果莫得,只能拿这个双核的 TMS320F28379 开始我的 DSP 学习之旅. TI 的 CCS 和 资料找起来是真的麻烦.(我还是喜欢...
2k 2 分钟

大道五十,天衍四十九,人遁其一! # STM32 HAL 库 编码器模式配置 前几天准备电赛的时候,朋友编码器数值读不出来,我好奇也就凑合了一下,记录一下配置过程 PS: 开发环境 STM32 HAL 库 + STM32CubeMX + MDK + VSCode + Windows10 # 相关硬件 # 电机 用的是 370 电机,减速器为 513, 减速比为 1:30 # 编码器 用的和电机一体的霍尔编码器,不知直到从哪买的,淘宝上查出来是 13pr # 主控 用的普中的 407 核心板,换了一个牛角座,没有使用它 usb 转串口 跳线帽一接上,对接 Xshell Jlink...
9.3k 8 分钟

# 前情 PS: 以下内容参考 RT-Thread 标准版本文档 RTOS 的加入大大的减少了时序冲突,也带来了新的问题. 如何让线程 按照一定顺序执行? 线程的执行顺序由优先级决定 同等优先级读入顺序,顺序执行,单次最大执行时间由时间片决定 按这种情况,则会存在 一块 RAM 内 在同一时间内,被两个线程操作. 例如,LCD 显示 Camera 采集的图像这个需求. 仅仅依赖上述限制,就会出现,LCD 开开心心的在画图,摄像头啪的一下,很快啊,LCD 没有闪,LCD 被换了一幅图都没有发觉,然后继续画,就出现 "脏数据" ,...