【嵌入式】
吴秀华Cherry
重技术、懂流程、轻管理
展开
-
【队列】队列 Queue(一):顺序队列与循环队列
背景没什么背景,就是想研究下队列。什么是队列?队列在生活中可谓是无处不在。最常见的就是去超市买菜称重时大妈们排得贼长的队列(这是理想情况,通常是围成一圈),还有超市结账的队伍,还有以前食堂打饭的队伍。是不是很有印象呢~~~ 那队列有什么特点呢?就拿食堂打饭来说,下课铃声一响,千万大军冲向食堂,为的是早来早打上饭,晚来了,那队伍忒长了,想死的心都有了~~~为什么会这样子呢?...原创 2018-09-20 22:37:00 · 2420 阅读 · 0 评论 -
【算法分享会】递归转非递归
背景:公司的嵌入式小组织发起了活动,每周进行一次学习分享。每周一个小主题 + 少量的算法题,大家相互研究学习。 第一次分享会,共发起了如下几个算法题:旅行售货员问题括号匹配问题递归转非递归问题层次遍历问题河内之塔本文仅对“递归转非递归问题”进行了解。题目递归转非递归当 m * n = 0 时, f(m, n) = m + n + 1当 m * n != 0 ...原创 2018-08-01 09:13:43 · 390 阅读 · 0 评论 -
【AES】C语言实现 与 原理分析
目录目录什么是AESAES 的思想AES加密说明字节代替(SubBytes)行移位(ShiftRows)列混淆(MixColumns)轮密钥加(AddRoundKey)密钥扩展工作繁忙,持续更新中…什么是AESAES:Advanced Encryption Standard,高级加密标准。 在密码学上又称:Rijndael加密法。AES 的思想...原创 2017-07-29 18:02:18 · 5728 阅读 · 2 评论 -
【Linux C 从入门到精通】笔记 1:Linux 系统概述
前言细心的朋友会发现,我之前写的【C 语言】系列在【C 语言入门】完结后,就停止更新了,从 5 月 29 号到今天,已经停了有 一个半月了。并不是姐我变懒了,而是在我想把【C 语言初级】及后面的系列的例程迁移到 Linux 系统上去实现,【C 语言入门】的例程都是基于 Windows 的 Visual Studio 去做的,为了提高自己的能力,同时挑战下自己,我用了一个半月的时间去初步阅读了《...原创 2018-07-14 22:11:39 · 986 阅读 · 0 评论 -
【FreeRTOS初探】内存管理
内存管理概览内容内存分配方案范例Heap_1.cHeap_2.cHeap_3.c内存管理概览背景:每当任务、队列或是信号量被创建时,内核需要进行动态内存分配。 调用标准的malloc()和free()库函数,必须承担以下若干问题:在小型嵌入式系统中可能不可用。具体实现可能会相对较大,会占用较多宝贵的代码空间。通常不具备线程安全特性。...原创 2018-03-12 17:58:49 · 411 阅读 · 0 评论 -
【FreeRTOS初探】资源管理
资源管理概览互斥内容临界区与挂起调度器基本临界区挂起(锁定)调度器vTaskSuspendAll()xTaskResumeAll()互斥量(及二值信号值)互斥量与二值信号的区别xSemaphoreCreateMutex API守护任务资源管理概览多任务系统潜在风险——当一个任务在使用某个资源的过程中,还没有完全结束对资源的...原创 2018-03-12 16:32:59 · 822 阅读 · 0 评论 -
【FreeRTOS初探】中断管理
中断管理概览延迟中断处理采用二值信号量同步vSemaphoreCreateBinary() APIxSemaphoreTake() APIxSemaphoreGiveFromISR()计数信号量在中断服务例程中使用队列中断嵌套中断管理概览只有以“FromISR”或“FROM_ISR”结束的API函数或宏才可以在中断服务例程中。本章内容: ...原创 2018-03-11 17:38:06 · 2393 阅读 · 0 评论 -
【FreeRTOS初探】队列管理
队列管理测试代码地址队列的特性数据存储读队列时阻塞写队列时阻塞2、如何创建一个队列?创建队列 xQueueCreate()3、队列如何管理器数据?4、如何向队列发送数据?xQueueSendToBackxQueueSendToFront5、如何从队列接收数据?xQueueReceive()xQueuePeek()6、队列阻塞是什么?uxQueue...原创 2018-03-09 19:17:03 · 2065 阅读 · 0 评论 -
【FreeRTOS 初探】 任务管理
FreeRTOS测试源码地址任务管理任务:每个执行线程都被成为任务。在应用程序中,FreeRTOS如何为各任务分配处理时间?在任意给定时刻,FreeRTOS如何选择任务投入运行?任务优先级如何影响系统行为?任务存在哪些状态?实例4:使用阻塞态实现延时(vTaskDelay)。实例5:精确阻塞时间延时(vTaskDelayUnit)实例6:合并阻塞与非阻塞任务如何实现一...原创 2018-03-08 19:05:01 · 1440 阅读 · 0 评论 -
【Linux C】 动态内存
目录目录内存分配动态/静态内存区别:1.CPU资源2.分配位置3.支持4.分配类型5.控制权内存分配内存分配与释放是配对的。 有分配,必须有释放。 造成问题: 1.内存泄漏; 2.内存耗尽动态/静态内存区别:1.CPU资源静态内存分配 → 编译时完成 → 不占CPU资源; 动态内存分配 → 程序运行时完成 → 占CPU...原创 2017-08-08 10:50:21 · 432 阅读 · 0 评论 -
【Linux】Vim错误 E37:No write since last change(add!to override)
今天用vim 编辑文件的时候,不知道瞎弄了啥,给弹了个错误:E37:No write since last change(add!to override)用:q退不出去,后来上网查了查,还是不知道是什么原因,但有解决方法:“ctrl”+“Z”就能退出去咯~~~...原创 2017-07-25 20:42:03 · 10986 阅读 · 5 评论 -
【Linux】 基本指令集
“Ctrl”+“Alt”:退出虚拟机,返回Windows。"ifconfig" : 查看虚拟机IP信息。用于连XSHELL时键入IP使用。一、目录相关1. cd 目录操作指令1].cd ../ --> 返回Home;2].cd XX/ --> 进入XX目录;3].cd .. --> 返回上级目录。2.makdir XX--> 建立XX目录3.rm -rf XX -...原创 2017-07-23 16:44:48 · 558 阅读 · 0 评论 -
【电路】 TTL电平、CMOS电平区别
目录 [toc]什么是TTL电平+5V 等价于 逻辑“1”;0V等价于逻辑“0”——TTL(晶体管-晶体管逻辑电平)信号系统,是计算机处理器控制的设备内部各部分之间通讯的标准技术。 TTL,Transistor-Transistor Logic(晶体管-晶体管逻辑集成电路),主要有:54/74系列TTL、高速型TTL(H-TTL)、低功耗型(L-TTL)、肖特基型TTL(S-TTL...原创 2017-10-23 22:11:13 · 3925 阅读 · 0 评论 -
【InterFace】STM32 I2C 死锁问题
最近在项目中设计了一个 IIC 模拟从机的程序。为了图方便,我随便拿了个 STM32F207 的开发板做 IIC Master,用 STM32CUBE 做了个程序,Master 的 数据发送和接收,都是直接调用 HAL 库的函数。 通过逻辑分析仪测试发现,每次主机出现错误后,IIC SDA 会被拉低,导致整个 IIC 总线被锁死了。后续的数据传输异常。现象如下图所示:后来我查看了 H...原创 2018-06-08 22:35:50 · 12898 阅读 · 11 评论 -
【STM32CUBEMX】 I2C Slave 实现
背景这几天在使用 STM32F030C8T6 做 I2C Slave。在网上查了好多的资料,使用 STM32 硬件 I2C 的例程少之又少,对 STM32 硬件 I2C 的批判巨多,只能硬着头皮,自己一步一步摸索。 实际上在这次硬件 I2C 调试之前,其实我已经通过 IO 模拟的方式实现了 I2C,但速率仅能实现 100Kb/s。对于400Kb,IO 模拟方式简直是无能为力。 实际上这个功...原创 2018-07-10 22:19:43 · 14817 阅读 · 5 评论 -
【InterFace】I2C 总线详述
背景昨天出去了一趟,人问:你熟悉什么?答:软硬件。结果,好尴尬。 硬件一般都做什么内容? 答:电源设计。 能说下升压、降压电路是怎么实现的吗? 答:不能。(Ps:后续增加 电源设计原理) 通讯都用到什么接口? 答:UART、I2C、SPI。 然后我想,I2C 我研究了好久,我得把话题转到 I2C 上。 我说:我最近在做 I2C 的接口。 I2C 和 SPI 有什么区别? 答...原创 2018-08-07 08:57:30 · 3321 阅读 · 3 评论 -
【Arduino】I2C Master 实现
背景前几天,有个海外的客户在使用 Arduino 连接产品(I2C接口)的时候,发现有异常。为了方便,我自己写了个 Arduino 的例程。使用 Arduino 例程的时候发现,官方的描述不太详细,走了些弯路。特此,写篇文章记录下。Arduino 的 I2C 相关函数Arduino 的封装库真的是非~非~非常的棒,I2C 就只有 10 个 API 函数。I2C 所用的库,称为:Wire...原创 2018-09-13 18:29:44 · 10298 阅读 · 3 评论 -
【CANopen】CAN总线的高级协议详解
目录简介CAL(CAN Application layer)CANopenCANopen对象字典(CANopen Object Dictionary)CANopen communication管理消息(Administrative message)服务数据对象(Service Data Object,SDO)过程数据对象(Process Data Object,PDO)预定义消息或特殊功能对象(P...原创 2019-02-19 11:30:33 · 14023 阅读 · 6 评论