嵌入式开发
文章平均质量分 69
专业游手好闲
这个作者很懒,什么都没留下…
展开
-
应用笔记-Datasheet.DAC.NC.DAC108S085CIM
目录1. 官方链接2. 主要指标3. 注意点1. 官方链接https://www.ti.com/product/DAC108S0852. 主要指标详细操作见官方手册中Functional Description3. 注意点应用相对简单,但需要主要上述标注的两个时间,否则会出现异常参考代码/** * @description: spi transmit data * @name : drv_da...原创 2020-07-14 20:42:05 · 700 阅读 · 0 评论 -
十六进制编辑器--HxD和FlexHex
目录1. 概述2. HxD--免费的16进制和磁盘数据编辑器3. FlexHex--16进制编辑器1. 概述开发过程中,或多或少,都需要查看和编辑十六进制数据,比如Bin文件,或者比较固件程序的BIN文件哪些地方出现了变化;十六进制的软件编辑器似乎很多,但多数需要收费,而且可能并不专业。在此推荐两款软件,HxD和FlexHex,优先推荐HxD,免费好用。FlexHex比较小...原创 2020-03-17 20:40:25 · 14858 阅读 · 1 评论 -
FreeRTOS 笔记之⑧:任务延时列表的实现
目录1. 任务延时列表的工作原理2. 实现任务延时列表2.1 定义任务延时列表2.2 任务延时列表初始化2.3 定义xNextTaskUnblockTime在本章之前,为了实现任务的阻塞延时,在任务控制块中内置了一个延时变量xTicksToDelay。每当任务需要延时的时候,就初始化xTicksToDelay需要延时的时间,然后将任务挂起,这里的挂起只是将任务在优先级位图表...原创 2019-11-18 17:04:07 · 727 阅读 · 0 评论 -
FreeRTOS 笔记之⑦:多优先级支持
目录1. 如何支持多优先级2. 查找最高优先级的就绪任务2.1 通用方法(普适性)2.2 优化方法(专业性)3. 代码修改之前的章节,FreeRTOS还没有支持多优先级,只支持两个任务互相切换,从本章开始,任务中我们开始加入优先级的功能。在FreeRTOS中,数字优先级越小,逻辑优先级也越小,这与隔壁的RT-Thread和μC/OS刚好相反。1. 如何支持多优先级就...原创 2019-11-14 17:10:59 · 452 阅读 · 0 评论 -
FreeRTOS 笔记之⑥:空闲任务与阻塞延时的实现
目录1. 空闲任务实现2. 实现阻塞延时2.1 vTaskDelay ()函数2.2vTaskSwitchContext()函数2.3 SysTick中断服务函数2.4 SysTick初始化函数之前的章节中,任务体内的延时使用的是软件延时,即还是让CPU空等来达到延时的效果。使用RTOS的很大优势就是榨干CPU的性能,永远不能让它闲着,任务如果需要延时也就不能再让CP...原创 2019-11-14 10:56:22 · 652 阅读 · 1 评论 -
FreeRTOS 笔记之⑤:临界区及应用
目录1. 临界区概述2. Cortex-M内核快速关中断指令3. 关中断4. 开中断5. 进入/退出临界段的宏6. 临界段代码的应用1. 临界区概述临界区指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时,其他线程或是进程必须等待(例如:bounded waiting 等待法),有一...原创 2019-11-12 13:40:56 · 1240 阅读 · 1 评论 -
FreeRTOS 笔记之④:任务的定义与任务的切换
目录1. 任务是什么2. 创建任务2.1 定义任务栈2.2定义任务函数2.3 定义任务控制块2.4 实现任务创建函数2.4.1 xTaskCreateStatic()函数2.4.2 prvInitialiseNewTask()函数2.4.3 pxPortInitialiseStack()函数3. 实现就绪列表3.1 定义就绪列表3.2就绪列表初...原创 2019-11-11 17:21:29 · 1246 阅读 · 0 评论 -
FreeRTOS 笔记之③:数据结构-- 列表和表项(链表和节点)
目录1. C语言链表1.1 单向链表1.2双向链表1.3链表的操作1.4链表与数组的对比2. FreeRTOS中链表的实现2.1 实现链表节点2.2 实现链表根节点2.2.1 根节点数据结构2.2.2 链表根节点的初始化2.2.3 将节点插入到链表的尾部2.2.4 将节点按照升序排列插入到链表2.2.5 将节点从链表删除2.2.6 节点...原创 2019-10-17 17:32:25 · 1593 阅读 · 1 评论 -
FreeRTOS 笔记之②:裸机系统与多任务系统
目录1. 裸机系统1.1 轮询1.2 前后台2. 多任务系统在真正开始动手写FreeRTOS内核之前,我们先来讲解下单片机编程中的裸机系统和多任务系统(不仅限于FreeRTOS)的区别。1. 裸机系统裸机系统通常分成轮询系统和前后台系统1.1 轮询轮询系统即是在裸机编程的时候,先初始化好相关的硬件,然后让主程序在一个死循环里面不断循环,顺序地做各种事情,大概的伪...原创 2019-10-15 16:25:15 · 1130 阅读 · 0 评论 -
FreeRTOS 笔记之①:嵌入式系统简介
目录1. 嵌入式操作系统1.1 定义1.2 嵌入式操作系统分类1.3 嵌入实时操作系统市场2. FreeRTOS 简介2.1 优势2.2 版权2.3 收费问题2.3.1 FreeRTOS2.3.2 OpenRTOS2.3.3 SaveRTOS3. FreeRTOS 获取资料3.1 获取源码3.2 获取书籍3.3 快速入口4. Fre...原创 2019-10-15 15:17:45 · 1467 阅读 · 0 评论 -
http协议及基于http协议的文件下载
目录1. HTTP 协议概述2. URL 与资源3. HTTP报文4. 使用Postman 获取数据5. 基于HTTP协议的文件下载5.1 文件整体下载5.2 文件分段(Range)下载5.2.1 获取文件的大小5.2.2 下载分段文件5.3 文件分块(chunk)下载1. HTTP 协议概述日常我们使用网络用得最多的无疑是在Web 浏览器(下文统...原创 2019-10-12 20:59:46 · 19425 阅读 · 1 评论 -
lwIP TCP/IP 协议栈笔记之七: 网络数据包
目录1. TCP/IP 协议分层2. lwIP的线程模型3. pbuf 结构体说明4. pbuf 的类型4.1 PBUF_RAM类型4.2 PBUF_POOL 类型4.3 PBUF_ROM和PBUF_REF 类型5.pbuf_alloc()6. pbuf_free()7. 其它pbuf 操作函数7.1 pbuf_realloc()7.2 pbuf_...原创 2019-08-21 11:03:17 · 2903 阅读 · 1 评论 -
lwIP TCP/IP 协议栈笔记之十三: ICMP协议
目录1. 简介2. ICMP 报文结构3. ICMP 报文类型3.1 ICMP 差错报告报文3.1.1 目的不可达3.1.2源站抑制3.1.3 重定向3.1.4 超时3.1.5参数错误3.2 ICMP 查询报文4. LwIP 中的ICMP 实现4.1 ICMP 报文数据结构4.2 发送ICMP 差错报文4.3 处理 ICMP 报文1...原创 2019-09-02 16:06:46 · 1679 阅读 · 0 评论 -
lwIP TCP/IP 协议栈笔记之十二: IP协议
目录1. IP地址1.1 IP地址概述1.2 IP地址编址1.3 特殊IP地址1.3.1 受限广播地址1.3.2 直接广播地址1.3.3 多播地址1.3.4 环回地址1.3.5 本网络本主机2. 局域网与广域网的概念2.1 局域网2.2 广域网3. 网络地址转换(NAT)4. IP 数据报5. IP 数据报的数据结构6. IP 数据报...原创 2019-09-02 11:25:54 · 2293 阅读 · 1 评论 -
lwIP TCP/IP 协议栈笔记之十一: ARP协议
目录1. TCP/IP模型及链路层概述2. MAC地址的概念3. ARP 概述4. 以太网帧结构5. IP 地址映射为物理地址6.ARP 缓存表7. ARP 缓存表的超时处理8. ARP 报文9.发送ARP 请求包10. 数据包接收流程10.1 以太网之数据包接收10.2 ARP数据包处理10.3 更新ARP 缓存表11.数据包发送流程...原创 2019-08-30 14:12:28 · 2087 阅读 · 0 评论 -
lwIP TCP/IP 协议栈笔记之十: LwIP 数据流框架
目录1. 网卡数据接收流程2. 内核超时处理2.1 sys_timeo 结构体与超时链表2.2 注册超时事件2.3 超时检查3. tcpip_thread 线程4. LwIP 中的消息4.1 消息结构4.2 数据包消息4.3API 消息通信过程中,本质上是数据的交互,数据传递,理解LwIP的框架,就可以更清晰的理解数据传递过程、原理。注:以下皆为有...原创 2019-08-29 23:24:49 · 5549 阅读 · 0 评论 -
lwIP TCP/IP 协议栈笔记之九: 有操作系统(FreeRTOS)移植
目录1. lwIP添加到工程2. 添加文件3. 修改网卡驱动4. 协议栈初始化5. 例程LwIP 不仅能在裸机上运行,也能在操作系统环境下运行,而且在操作系统环境下,用户能使用NETCONN API 与Socket API 编程,相比RAW API 编程会更加简便。操作系统环境下,这意味着多线程环境,一般来说LwIP 作为一个独立的处理线程运行,用户程序也独立为一个/多个线...原创 2019-08-22 21:44:51 · 2471 阅读 · 1 评论 -
lwIP TCP/IP 协议栈笔记之六: 内存管理
目录1. 几种内存分配策略1.1 固定大小的内存块1.2 可变长度分配2. 动态内存池(POOL)2.1 内存池的预处理2.2 内存池初始化2.2 内存池分配2.3 内存释放3. 动态内存堆3.1 内存堆的组织结构3.2 内存堆的初始化3.3 内存分配3.4 内存释放4. 使用C 库的malloc 和free 来管理内存5. LwIP 中...原创 2019-08-18 11:29:43 · 2480 阅读 · 0 评论 -
lwIP TCP/IP 协议栈笔记之八: 无操作系统移植
目录1. lwIP添加到工程2. 添加头文件3. 修改网卡驱动4. lwIP 时基5. 协议栈初始化6. 获取数据包6.1 查询方式6.2 中断方式7. ping 命令和ipconfig命令1. lwIP添加到工程如上图,把源码中src 添加到工程,并添加LwIP 头文件路径。比较简单,不做赘述2. 添加头文件lwipopts.h、cc.h、...原创 2019-08-21 15:23:34 · 1897 阅读 · 0 评论 -
lwIP TCP/IP 协议栈笔记之十四: UDP协议
目录1. UDP 协议简介2. UDP 常用端口号3. UDP 报文4. UDP 报文的数据结构4.1 UDP 报文首部结构体4.2 UDP 控制块5.UDP 报文发送6. UDP 报文接收UDP 是一个简单的数据报的传输层协议:应用线程的每个输出数据都正好产生一个UDP 数据报,并组装成一份待发送的 IP 数据报。1. UDP 协议简介UDP 是Us...原创 2019-09-02 17:45:22 · 2010 阅读 · 0 评论 -
lwIP TCP/IP 协议栈笔记之十五: TCP协议
目录1. TCP 服务简介2. TCP 的特性2.1 连接机制2.2 确认与重传2.3 缓冲机制2.4 全双工通信2.5 流量控制2.6 差错控制2.7 拥塞控制3. 端口号的概念4. TCP 报文段结构4.1 TCP 报文段的封装4.2TCP 报文段格式5. TCP 连接5.1 “三次握手”建立连接5.2 “四次挥手”终止连接...原创 2019-09-06 17:11:33 · 2701 阅读 · 1 评论 -
秉火429笔记之七位带操作
目录位带概况位带概况位操作,简单的理解,可以单独的对一个比特位读和写,51单片机非常常见。类如,51单片机通过关键字sbit来实现位定义,STM32并没有这个关键字,而是通过访问位带别名区(Bit band alias)来实现的。通过查看《M4内核参考手册》3.4 system address map 可知下图:M4中2个区域实现了位带,其一为SRAM的最低1MB空间,...原创 2019-04-28 22:29:12 · 217 阅读 · 0 评论 -
lwIP TCP/IP 协议栈笔记之二十一: 百度天工物和阿里云物联 IOT接入平台
目录1. 百度天工物接入1.1 物接入简介1.2 使用 IOT HUB1.2.1 创建项目1.2.2 创建策略1.2.3 创建身份与创建用户1.2.4 MQTT 软件测试连接1.2.5 MQTT 软件测试连接1.2.6 IOT HUB的规则引擎和数据可视化2. 阿里云物联2.1 使用阿里云物联2.2 MQTT FX连接测试2.4 阿里云物...原创 2019-10-09 14:53:37 · 1559 阅读 · 0 评论 -
lwIP TCP/IP 协议栈笔记之二十: MQTT 移植
目录1. MQTT 协议简介2. 移植MQTT 协议3. cJSON 移植4. 例程1. MQTT 协议简介MQTT 协议全称是Message Queuing Telemetry Transport,翻译过来就是消息队列遥测传输协议,它是物联网常用的应用层协议,运行在TCP/IP 中的应用层中,依赖TCP 协议,因此它具有非常高的可靠性,同时它是基于TCP 协议的<客...原创 2019-10-08 10:04:15 · 3281 阅读 · 4 评论 -
JSON及CJSON详解笔记
目录1. JSON1.1 JSON 概述1.2 JSON 语法1.2.1 JSON 对象1.2.2 JSON 数组1.2.3 JSON 值1.2.4 JSON 字符串1.2.5 JSON 数值1.2.6 JSON 布尔值1.2.7 JSON null1.2.8 JSON 空白1.2.9JSON 文件 文件2. CJSON获取和移植2.1 源...原创 2019-09-20 22:54:59 · 2147 阅读 · 0 评论 -
lwIP TCP/IP 协议栈笔记之十九: JPerf 工具测试网速
目录1. iPerf 与JPerf2. 测试网络速度2.1 获取JPerf 网络测速工具2.2 测试开发板接收速度(NETCONN API)2.3 测试开发板接收速度(Socket API)2.4 测试开发板发送速度(NETCONN API)2.5 测试开发板发送速度(Socket API)2.6. 测试开发板收发速度(apps\lwiperf)3.提高LwI...原创 2019-09-19 10:14:29 · 4909 阅读 · 1 评论 -
lwIP TCP/IP 协议栈笔记之十七: NETCONN 接口编程IPV6
目录1. 初识IPv62. IPv6地址格式3. LwIP TCP client 示例1. 初识IPv6LwIP IPv6 本不在本次计划中,正好遇到,特此简单记录一下。下图为PC端 IP信息,可以看到IPv6和IPv4地址都在用,随着IPv4资源的日益匮乏,IPv6的逐步在替代使用中,2017年 国务院办公厅印发《推进互联网协议第六版(IPv6)规模部署行动计划》。...原创 2019-09-18 16:56:26 · 3997 阅读 · 8 评论 -
lwIP TCP/IP 协议栈笔记之十八: Socket接口编程
目录1. Socket 概述2. LwIP 中的socket3. Socket API3.1 socket()3.2 bind()3.3 connect()3.4 listen()3.5 accept()3.6 read()、recv()、recvfrom()3.7 sendto()3.8 send()3.9 write()3.10 close(...原创 2019-09-18 23:18:33 · 10843 阅读 · 4 评论 -
lwIP TCP/IP 协议栈笔记之十六: NETCONN 接口编程
目录1. netbuf 结构体2. netbuf 相关函数说明2.1 netbuf_new()2.2 netbuf_delete()2.3 netbuf_alloc()2.4 netbuf_free()2.5 netbuf_ref()2.6 netbuf_chain()2.7 netbuf_data()2.8 netbuf_next()与netbuf_fir...原创 2019-09-16 12:33:41 · 13944 阅读 · 7 评论 -
lwIP TCP/IP 协议栈笔记之四: 操作系统配置文件 sys_arch.c & sys_arch.h 详解
目录1. 操作系统抽象层说明1.1 Semaphores(信号量)1.2 Mutexes(互斥锁)1.3 Mailboxes(邮箱)1.4 Misc(杂项)2. Time(时间)3. Critical sections(关键代码段/临界区)1. 操作系统抽象层说明无需在NO_SYS模式下实现本节中的功能。 特定于操作系统的代码应该在arch/ sys_arch...原创 2019-08-13 17:21:33 · 5735 阅读 · 0 评论 -
秉火429笔记之十八 ETH--以太网
目录1. 以太网简介2. SMI 接口 (站管理接口)2.1 SMI帧格式2.2 SMI 读写操作3. MII 和 RMII接口4. MAC 802.34.1 MAC 802.3 帧格式4.2 MAC数据包发送和接收4.2.1 MAC数据包发送4.2.2MAC数据包接收4.2.3MAC过滤5. 官方例程及应用笔记(LWIP)6. 硬件设计...原创 2019-07-29 10:35:35 · 2170 阅读 · 0 评论 -
秉火429笔记之十一 Systick--滴答定时器
目录1. 概述2. 寄存器说明3. 编程要点4. 实例代码SysTick—系统定时器是属于CM4内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bit的向下递减的计数器。所有基于CM4内核的单片机都具有这个系统定时器,使得软件在CM4单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。2. 寄存器说明CTRL SysTick...原创 2019-05-07 15:48:24 · 232 阅读 · 0 评论 -
物联网传输技术---LoRa
目录1.背景概述2.什么是LoRa3.LoRa技术特性4.LoRa与LoRaWAN5.LoRa缺点1.背景概述 随着物联网迅猛发展及其应用的日益广泛,无线传输协议也越来越受到技术人员和大众的关注。目前现有的物联网和无线通信传输协议有:蓝牙,WiFi,Thread,Zigbee,4G,5G等等。这些协议各有优缺点,也各有自己的应用场景,但是...原创 2019-05-07 12:32:20 · 4259 阅读 · 0 评论 -
秉火429笔记之十 EXTI-外部中断/事件
目录1. EXTI 简介2. EXTI 功能框图3. 功能点4. 编码要点1. EXTI 简介外部中断/事件控制器(EXTI)管理了控制器的23个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。EXTI 控制器的主要特性如下:...原创 2019-05-06 16:23:19 · 614 阅读 · 0 评论 -
秉火429笔记之九 中断应用概述
目录1. 中断类型2. NVIC 概述3. 中断优先级4. 优先级分组5. 编程要点1. 中断类型在此不严格区分中断和异常,即简单的认为中断与异常一个概念。M4 内核搭载了异常响应系统,支持众多的系统异常和外部中断。其中,F429芯片,系统异常10个,外部中断91个。除个别异常的优先级固定外,其它均可编程。stm32f4xx.htypedef enum I...原创 2019-05-06 15:41:57 · 461 阅读 · 0 评论 -
秉火429笔记之八 RCC时钟
目录1. RCC 作用概述2. RCC框图剖析—时钟树3. 编程要点4. 源码实例1. RCC 作用概述RCC :reset clock control 复位和时钟控制器。设置系统时钟SYSCLK、设置AHB分频因子(决定HCLK等于多少)、设置APB2分频因子(决定PCLK2等于多少)、设置APB1分频因子(决定PCLK1等于多少)、设置各个外设的分频因子;控制AHB...原创 2019-05-06 14:49:41 · 618 阅读 · 0 评论 -
秉火429笔记之十三 通信基本概念
目录1. 串口通讯与并口通讯2. 全双工、半双工及单工通讯3. 同步通讯与异步通讯4. 通信速率1. 串口通讯与并口通讯按数据传送的方式,通讯可分为串行通讯与并行通讯,串行通讯是指设备之间通过少量数据信号线(一般是8根以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。而并行通讯一般是指使用8、16、32及64根或更多的数据线进行传输的通讯方式。显而易见...原创 2019-05-08 11:27:33 · 387 阅读 · 0 评论 -
秉火429笔记之五控制RGB彩灯
1. RGB彩灯混色RGB彩灯实际上由三盏分别为红、绿、蓝的LED灯组成的,通过控制RGB颜色强度的组合,可以混合出各种彩色。/* 基本混色*/// LED1(R)/ LED2(G)/ LED3(B)//红#define LED_RED \ LED1_ON;\ LED2_OFF;\ LED3_OFF//绿#define LED_GREEN...原创 2019-04-19 16:57:27 · 1582 阅读 · 0 评论 -
秉火429笔记之四启动文件分析
名为“startup_stm32f429_439xx.s”的文件,它里边使用汇编语言写好了基本程序,当STM32芯片上电启动的时候,首先会执行这里的汇编程序,从而建立起C语言的运行环境,所以我们把这个文件称为启动文件。该文件使用的汇编指令是Cortex-M4内核支持的指令,可从《Cortex-M4 Technical Reference Manual》查到,也可参考《Cortex-M3权威指南中文...原创 2019-04-19 16:08:42 · 205 阅读 · 0 评论 -
秉火429笔记之三GPIO框图剖析
目录1. GPIO概述2.保护二极管及上、下拉电阻3. P-MOS管和N-MOS管1. GPIO概述GPIO是通用输入输出端口(General-purpose I/O)的简称。芯片的GPIO引脚与外部设备连接起来,从而实现与外部通信、控制、及数据采集等功能。下图为GPIO的结构框图2.保护二极管及上、下拉电阻引脚的两个保护二级管可以防止引脚外部过高或过低的电压输入,...原创 2019-04-19 15:41:49 · 412 阅读 · 0 评论