自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

八度空间

踏竹追风

  • 博客(48)
  • 资源 (1)
  • 收藏
  • 关注

原创 3 CAN错误帧、过载帧、帧间隔

三种帧的格式远比数据帧简单,但它背后的机制比较复杂,需要重点掌握

2023-05-05 15:30:54 2776 1

原创 3.1 拓展-I2C、SPI的区别

I2C和SPI都对低速设备通信提供了很好的支持,不过,SPI适合数据流应用,而I2C更适合“字节设备”的多主设备应用。“大”协议是用于系统外的整个系统之间通信的,“小”协议是用于系统内各芯片间的通信,没有迹象表明“大”协议有必要取代“小”协议。I2C的高速模式最快也就Ultra Fast Mode的5Mbps,而且还需要额外的电路,导致I2C的高速模式几乎没有推广开,一般用I2C还是使用它的普通(100Kbps)和快速模式(400Kbps)。但是对使用的工程师来讲,理解总线结构更费劲,而且总线的性能不高。

2023-04-21 19:33:30 643

原创 0.1 大小端、字节序、位序

大小端、字节序、位序

2023-04-21 18:47:59 434

原创 2.0 GN1621A-段码屏LCD

一、综述  段码液晶屏是早期液晶显示屏开始应用时的主要类型,目的是替代LED数码管,因为原理简单、成本低,直到现在还在广泛的应用。它区别于点阵屏,段码屏上的内容一般需要找厂家定制,一旦屏幕制作完成,显示的内容就无法更改。这相对于点阵屏是一个劣势,点阵屏可以随心所欲的显示要展现的内容。  段码屏中有很多个段,有32x4、32x8、64x4、64x8等等,以32x4为例,说明该屏可以点亮128个段,每个段经过厂家制作成不同的形状,例如把第0段制作成左上角的“蓝牙”图标,把第59段制作成右上角的“电池”图标,

2021-12-08 15:18:04 5959

原创 1.0 DS1302-外部RTC

一、综述DS1302是美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片,因为应用非常广泛,结果就导致了大量的国产仿制品,GC1302是一款国产DS1302仿制芯片,使用方法和DS1302完全相同,DS1302和GC1302是完全等效的。二、应用1、电路原理  上图是一个典型的应用图,MCU通过CE、I/O、SCLK三个引脚控制GC1302工作,GC1302有两种供电方式:备用电源Vcc1和主电源Vcc2,GC1302工作在两者较大者,Vcc2>Vcc1+0.2v,Vcc2供

2021-12-01 18:13:03 2180

原创 Git—1.1 本地仓库

一、常用命令1、新建仓库进入要创建git仓库的目录,使用如下指令来创建git仓库,git init执行完成后,会在当前目录内生成一个.git目录,这个目录包含了仓库的一些数据,但该目录里是隐藏的,开发者不需要关注它,也不能随便修改它。可以发现,创建完成后,文件夹名称加上了一个(master)的后缀。用ls查看文件夹下的内容,是空的。如果想指定路径创建git库,执行如下命令,xxx代表着路径。git init xxx2、添加提交把文件添加到仓库,使用如下命令,xxx代表文件或文件夹名称

2021-08-06 15:58:50 184

原创 Git—1.0 git

一、综述Linux自诞生起,有着为数众多的维护者,为了方便繁多的补丁提交和保存归档,项目组与2002年使用分布式版本控制系统BitKeeper来管理和维护代码,但是到了2005年,BitKeeper与linux的合作关系结束,迫使linux的创始人Torvalds开始编写自己的版本管理系统git,2005年7月11日,git发布了第一版,如今git已经成为了最先进最伟大的分布式版本控制系统。git在英文中本意是“卑鄙小人”,反正不是什么好词汇,linux本人特别喜欢把他的项目用自己来命名,而他认为自己是一

2021-08-06 15:22:21 120

原创 常见算法—1 称苹果

  十个苹果,有一个比较重,如何称3次就能判断出重的那个?1、常规的思路是用二分法:把十个苹果平均分为A、B两组,每组各5个。  第一次称重:如果A组重,把A组分成C、D两组,C组2个,D组3个。如果B组重,把B组分成C、D两组,C组2个,D组3个。  第二次称重:如果C组重,把C组的2个各再称一次,判断完毕,共称重3次。如果D组重,把D组的3个分成E,F两组,E组1个,F组2个。  第三次称重:如果E组重,判断完毕,共称重3次。如果F组重,把F组的2个各再称一次,判断完毕,共称重4次。  可以看

2021-07-28 19:19:26 1894

原创 动态规划—1.3 九宫格最短路径

  有一个九宫格,从左下顶点出发,只能沿着边走,走到右上顶点的最短路径一共有几条?  题目要求的是最短路径,说明走的每一步只能离终点越来越近,不能越来越远。故如果终点是右上,每一步必须向上或向右,不能向左或向下。同理,如果终点是左下,每一步必须是向左或向下。  下面这幅图很好的说明了动态规划的解决思路,答案是20种。  再深入一些,如果其中有一个点无法达到,现在最短路径又有几条?  该点位置的不同,影响不同。如果在对角线上,影响是最大的。从20条减到了8条。  如果再深入一些,不再求最短路径,

2021-07-28 19:13:33 3712

原创 动态规划—1.2 买卖股票的最佳时机

一、买卖股票的最佳时机1  给定一个代表股票价格的数组,只能进行一次买卖交易,求所能获取的最大利润。  例如,A=[7,1,5,3,6,4],显然1时买入,6时卖出,利润最大。  令in为买入价格,out为卖出价格,p=out-in。  A0=[a],in=a,out=a,p=0。  A1=[A0,b]  (1)、如in>b,则in=b,out=b。因为出现了更低的买入价,所以要更新买入价,同时更新卖出价。  (2)、如in<b,则out=b。因为价格高出买入价,则更新卖出价。 

2021-07-28 16:57:10 494

原创 动态规划—1.0 动态规划介绍

一、青蛙跳台阶  一只青蛙一次可以跳上1级台阶,也可以跳上2级,求该青蛙跳上一个n级的台阶总共有多少种跳法?  台阶共1级,1种跳法,1步。记为f(1)=1。  台阶共2级,2种跳法,1步+1步和2步。记为f(2)=2。  台阶共3级,从1级跳2步和从2级跳1步,即f(3)=f(1)+f(2)。  台阶共4级,从2级跳2步和从3级跳1步,即f(4)=f(2)+f(3)。  所以依次类推,台阶共n级,从n-2级跳2步和从n-1级跳1步,即f(n)=f(n-2)+f(n-1)。  故它的状态转移方

2021-07-28 11:46:09 148

原创 动态规划—1.1 数组最大连续子序列和

一、综述  例如数组A=[6,-1,3,-4,-6,9,2],求该数组的最大连续子序列和。  显然最笨的算法是枚举出所有的连续子数组,然后比较大小,例如A=[a,b,c,d],所有的连续子数组为{a,b,c,d,a+b,b+c,c+d,a+b+c,b+c+d,a+b+c+d}  而有n个元素的数组的所有连续子数组的个数为n+(n-1)+(n-2)+...+1=n!  显然该算法的时间复杂度为O(n^2),不是最佳的算法。求最大连续子数组,肯定要知道每个连续子数组的大小关系,但这并不代表需要把

2021-07-28 11:17:31 531

原创 2.5 充电桩发送报文

一、综述  国标27930中规定了BMS和充电桩之间的通讯报文,并分为4个阶段:握手阶段、参数配置、充电阶段和结束阶段。  每个阶段的报文数:握手阶段4条,参数配置5条,充电阶段9条,结束阶段4条。共22条报文。  而需要充电桩发送的报文,握手阶段2条,参数配置3条,充电阶段2条,结束阶段2条,共9条报文。总体来说并不多。  整个CAN通讯过程,凡是涉及到多包传输的都是BMS发送给充电机的报文,充电机发送给BMS的都是单包传输。二、握手阶段1、充电机握手CHM  当电子锁锁定后,发送该报文。

2021-07-27 17:45:45 11334 1

原创 2.4 结束阶段报文

一、充电结束阶段BMS充电机1、向充电机发送“BMS统计数据报文BSD”2、充电机是否收到“BMS统计数据报文BSD”(1)、是,向BMS发送“充电机统计数据报文CSD”。结束充电,关闭电源。(2)、否,充电机向BMS发送“充电机中止充电报文CST”,返回充电阶段步骤5.1。3、BMS是否收到“充电机统计数据报文CSD”。(1)、是,结束充电,关闭电源。(2)、否,返回步骤1。...

2021-07-27 17:40:35 720 1

原创 2.3 充电阶段报文

一、充电阶段BMS充电机1、向充电机发送“电池充电总状态报文BCS”和“电池充电需求报文BCL”。2、充电机是否接受到“电池充电总状态报文BCS”和”电池充电需求报文BCL“。(1)、是,向BMS发送“充电机充电状态报文CCS”。(2)、否,向BMS发送“SPN2830=0x00的充电机输出未准备就绪报文CRO”,返回充电参数配置阶段6。3、BMS接受“充电机充电状态报文CCS”是否超时(1)、否,向充电机发送“电池充电总状态报文BCS”、“BMS发送动力蓄电池状态信

2021-07-27 17:30:24 7874

原创 2.2 参数配置报文

一、充电参数配置阶段BMS充电机1、向充电机发送“动力蓄电池充电参数报文BCP”。2、充电机等待是否收到“动力蓄电池充电参数报文BCP”。(1)、是,配置充电参数,向BMS发送“充电机发送时间同步信息报文CTS”和“充电机最大输出能力报文CML”。(2)、否,返回充电握手辨识阶段的3.1。3、BMS等待是否收到“充电机发送时间同步信息报文CTS”和“充电机最大输出能力报文CML”。(1)、是,判断是否能够进行充电(2)、否,返回步骤1。4、BMS判断是否能够进

2021-07-27 17:18:07 1917

原创 2.1 握手阶段报文解析

一、握手辨识和充电握手辨识BMS充电机1、充电机向BMS发送“充电机握手报文CHM”2、BMS等待是否收到“充电机握手报文CHM”。(1)、是,向充电机发送“BMS握手报文BHM”。(2)、否,则继续等待3、充电机等待是否收到“BMS握手报文BHM”。(1)、是,结束握手辨识阶段。(2)、否,重新返回步骤1。4、BMS等待是否收到“充电机握手报文CHM”。(1)、是,重新返回步骤2.1。(2)、否,结束握手辨识阶段。BMS充电机

2021-07-27 17:12:59 6926

原创 1.1 GBT 27930简析

  GBT 27930是基于SAE J1939协议的

2021-07-27 16:34:41 6375 1

原创 3.3 结束阶段流程

一、结束阶段  1、当充电桩开始周期性的发送CST报文后,等待接收,如果接收到BSD报文,则停止发送CST。BSD报文里包含电池容量,电压等信息。同时充电桩开始发送CSD,里面包含充电时间,充电电量等。自发送CST后,每隔100ms,就要检测电流值是否为5A以下,如果降到5A一下,则断开K1、K2。同时泄放电路动作。  2、判断是否接受到BSD,如果在10s内没有接收到,则进入故障1。如果成功接收,则断开辅助电源继电器K3、K4。最后电子锁解锁。充电完成。...

2021-07-26 10:27:22 985

原创 3.2 充电阶段流程

一、充电阶段  1、从充电桩开始发送SPN2560=0xAA的CRM开始,在5S内,判断是否收到BCP报文,如果超时,则进入故障3。如果接收到,则停止CRM发送,并根据BCP报文来判断车辆参数是否合适。例如最高允许充电总电压低于充电机的最低输出电压等,具体的判断标准详见《知识库—握手辨识及充电参数配置》。如果发现不配置,则进入故障3。  2、如果参数均能匹配,则开始定期发送CTS和CML,从发送5S内,如果没有收到SPN2829=0x00的BRO报文,则超时。或者在60S内,没有收到SPN2829

2021-07-26 10:23:50 3611

原创 3.1 参数配置流程

一、参数配置  1、从充电桩开始发送SPN2560=0xAA的CRM开始,在5S内,判断是否收到BCP报文,如果超时,则进入故障3。如果接收到,则停止CRM发送,并根据BCP报文来判断车辆参数是否合适。例如最高允许充电总电压低于充电机的最低输出电压等,具体的判断标准详见《知识库—握手辨识及充电参数配置》。如果发现不配置,则进入故障3。  2、如果参数均能匹配,则开始定期发送CTS和CML,从发送5S内,如果没有收到SPN2829=0x00的BRO报文,则超时。或者在60S内,没有收到SPN2829

2021-07-16 18:39:07 2490 2

原创 3.0 握手阶段流程

一、握手阶段  1、首先检测是否插枪,直流桩的插枪信号是CC1为4V。插枪后,锁定电子锁,并检测,如果锁定失败多次,进入充电结束时序2。  2、如果锁定电子锁成功,则启动辅助电源,闭合K3,K4,并开始计时,在5S内,循环发送CHM报文,周期为250ms,正常情况下,电动车收到CHM报文后,需要回复BHM报文。如果超时,则重新进入5S循环发送CHM报文。如果充电桩收到BHM报文,检测K1、K2的外侧电压是否小于10V,这里的意图应该是检测K1,K2是否黏连?因为此时K1和K2应处于断开状态,如果

2021-07-16 18:33:41 6535

原创 2.0 直流充电控制时序

T4,充电机启动握手报文,获取最高允许充电总电压,同时车辆通过检测点2的电压判断接口是否完全连接,如果为6V,车辆等待充电桩的握手报文。T1,车辆接口未完全连接,S还时处于打开状态,但R4已接入电路,故检测点1的电压为6V。T20,保持开关S为打开状态,将车辆插头从车辆插座中拔出,检测点1的电压变为12V,检测点2的电压变为12V。T19,按下车辆插头开关S,使开关S打开,检测点1的电压变为6V,检测点2的电压依然为6V。T2,车辆接口连接,松开插头按钮,开关S闭合,R2接入电路,故检测点1的电压为4V。

2021-07-16 18:30:29 3125 2

原创 1.0 直流充电控制电路和控制过程

一、控制导引电路和基本电器件简介  直流充电只能使用模式4,并且只能使用连接方式3。控制电路如下图所示  因为是连接方式3,故只有车辆接口。该接口中,有9个端点。  DC+、DC-是充电回路。PE是共地。S+、S-是CAN通讯接口,A+、A-是低压辅助供电回路。CC1连着检测点1,它位于充电桩一端,CC2连着检测点2,它位于车辆一端。  K1、K2是直流供电回路接触器,K5、K6是充电回路接触器,K3、K4是低压辅助供电回路接触器。开关S为车辆插头的常闭开关。二、充电控制过程  1、车辆插头与

2021-07-07 14:30:37 12537 3

原创 ST/HAL_Base—1.0 I2C主发从收非中断

一、初始化  在进行I2C初始配置时,主机和从机的参数必须相同,例如地址模式、时钟时间等等。仅从这些配置还看不出谁是主机,谁是从机。// 配置都是相同的 I2cHandle.Instance = I2Cx; I2cHandle.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; I2cHandle.Init.ClockSpeed = 100000; I2cHandle.Init.DualAddressMode

2021-07-07 11:38:38 461

原创 5 SAE J1939协议简析

一、PDU  SAE J1939协议是美国汽车工程协会的推荐标准,它基于CAN总线,对扩展数据帧中仲裁场的29位标识符进行重新解释,帧的其他部分不变。它包含一个单一的协议数据单元PDU。  PDU的构成如下,不同的应用场景,个别位的解释可能会不同,但总体并不影响使用。  P:优先权,从最高0设置到最低7。  R/EDP:保留位/扩展数据页,以备后续开发使用。一般设置为0。  DP:数据页,选择参数群描述的辅助页,从页0开始分配,一般设置为0。  PF:PDU格式,它有两个功能,一是确定PDU的

2021-07-07 10:48:58 3300

原创 2 CAN数据帧、遥控帧

CAN空闲状态为隐性电平(逻辑1),节点之间以帧的形式进行通讯,通讯结束时,总线恢复隐性电平,当连续出现11位隐性电平时,CAN再次进入空闲状态。下面用几个简单的应用场景来描述每种帧的用法,但它们的实际应用远不如此,有些帧的应用场景比较复杂,尤其是错误帧。节点A要想发送数据给节点B,必须使用数据帧来发送,数据帧也是CAN通讯中最常用的帧。如果节点A想主动从节点B获取数据,那么它需要先发送一包遥控帧,节点B接收到后,通过数据帧把数据返回给节点A。

2021-07-07 10:42:52 1250

原创 4 CAN同步机制

CAN同步只会出现在发送节点产生由隐性电平到显性电平跳变的时刻,该跳变沿必须在SS段内,如果不在则必须进行同步,唯一有区别的是,如果是SOF跳变,则进行硬同步,其他的,则进行重新同步。如果干扰太强,可能会导致一次重新同步没有完全同步回来,那也只能等待下一次的隐性电平到显性电平的跳变沿,再次进行重新同步,再次强调,PBS1的延长和PBS2的缩短只在执行重新同步的位生效,一旦该位结束,不管时序有没有同步回来,PBS1和PBS2均会恢复预设值。PBS1和PBS2只是提供缓冲而已,不能无限的缓冲。

2021-07-07 10:40:09 5110 2

原创 1.3 DLT645

一、简介  目前市面的大部分的电表,通信都是遵循该协议。因为物理层使用RS-485,故为半双工通信,主站指终端设备,从站指多功能电能表。  数据链路层,默认波特率2400,偶校验,8bit数据,1bit停止位。先传低位,后传高位。D0是字节最低有效位,D7是字节最高有效位,如下图所示  帧格式如下表所示说明帧起始符地址域帧起始符控制码数据域长度数据域校验码结束符字节0x68A0~A50x68CLDATACS0x161、帧起始符  固定0x6

2021-07-07 01:39:36 1914

原创 1.2 ModBus

一、简介  ModBus是一种串行通信协议,是施耐德电气与1979年发布的,目前已经成为工业领域通信协议的业界标准,它一般是基于RS485,默认波特率为9600。  每一帧的数据格式为说明地址域功能域数据域CRC校验域字节数11N2  1、地址域,在帧首,一般只使用1~247。该字节表明了终端设备的地址,而且是唯一的。须有被寻址到的终端才会响应,终端响应时,需要把自己的地址放在帧中。直流电表的默认地址为1。  2、功能域,它用来告知被寻址的终端需要执行何种功能

2021-07-07 01:39:17 263

原创 常见算法—2 RSA加密算法

  在1976年以前,所有的加密算法都是“对称加密算法”,即加密和解密都是同一套规则。甲向乙传递信息时,不仅要把加密后的内容告知,还要把加密规则一同告知,否则乙就不可能获取原本的内容。但是不管加密规则以什么样的方式告知,必然存在被窃取的风险,不安全。有没有加密和解密规则不是一套的加密算法?  有。非对称加密算法。假设甲要向乙传递信息,乙要计算出一套加密规则和一套解密规则。加密规则可以公开的需要告诉甲,又被称为公钥。解密规则需要乙自己保存,不能被别人知道,又被称为私钥。甲在获取公钥后,对内容加密,并传递给乙

2021-07-07 01:35:12 888

原创 1.1 RS485、RS232和线序

一、综述  UART一般代表了一种传输协议,例如波特率,奇偶校验位等,它并没有规定这种协议的电气特性。故在物理层上,有多种电气特性可供使用,最常见的当属三种:TTL电平、RS485接口和RS232接口。  TTL电平是最常用的一种电平,全称是晶体管-晶体管逻辑集成电路。它大量应用于电子产品中,由TTL电子元器件组成电路使用的电平。UART的TTL电平,只使用RXD、TXD和GND三条线,它的传输距离较短,一般只用于芯片级通信或输出log。  RS232接口全称是“数据终端设备和数据通信设备之间串行二进

2021-07-06 18:18:47 6630

原创 1.0 UART

一、综述  UART,Universal Asynchronous Receiver/Transmitter,通用异步收发传输器。它是一种串行异步收发协议。我们总是把UART叫做串口,其实这是不严谨的,串口是一个泛称。  它的协议格式如下所示:  协议共分4个部分:起始位,数据位,奇偶校验位,停止位。  起始位,是1bit低电平,用来表示字符传输的开始,因为UART在空闲时,都是高电平。  数据位,数据可以是5-9bit,这问题就来了,一般情况下,我们都是按字节传输,1字节8bit,显然如果设置

2021-07-06 18:15:28 533

原创 3.0 SPI

一、综述  SPI,Serial Peripheral interface,串行外围设备接口,全双工通讯。大概在1979年,由Motorola公司首先在其MC68HCXX系列处理器上使用。与I2C不同,SPI的协议非常简单,不规定最大传输速率,没有通讯应答机制、流控制规则和地址方案,甚至SPI主设备发送数据时,都可以不知道指定的从设备是否存在。正是因为这种特性,当只有SPI主机发送数据,而没有从机时,用逻辑分析仪或示波器依然能抓取到完整的数据帧,这在I2C等协议中是不可能的,因为I2C有应答机制,只有主机

2021-07-06 18:12:30 2107 2

原创 Base—1.1 I2C EEPROM

一、简介  EEPROM一般是通过I2C读取,常用的AT23C02的容量有2K,这里的2K不是指有2KByte,而是2Kbit,参考手册上说:“共有32页,每页为8字节”,显然328=256Byte=2568=2048bit。同样的该型号芯片寻址为8位寻址,8位寻址最高能寻址到256。  AT23C04的容量有4K,9位寻址。  在读取EEPROM的数据时,应该先用write写一个存储的地址(注意不是设备的地址),再用read读一定长度的数据。  EEPROM起始的几个空间应该是放的固定的出厂值,无

2021-07-06 18:10:27 253

原创 2.0 I2C

一、综述  I2C,Inter-Integrated Circuit,内部集成电路总线,半双工通讯。由飞利浦在1980开始研发,1982正式发布,最初是用于控制电视内的各种芯片。和SPI不同,I2C有严格的协议规范,到现在为止,已经发布了若干个版本的规范。I2C主要是为了低速设备通信发明的,所以即便是最快的传输速度5Mbps,还是远远比不上SPI。协议规范如下图所示。  最早版本发布于1982年,标准模式(Standard Mode)最大100kbps,7位地址。1992年1.0版本,引入快速模式(Fa

2021-07-06 18:07:11 412

原创 0.0 总线简介

  总线,Bus,主要应用于芯片级别通讯,以及计算机之间的通讯,例如I2C、SPI、USB、CAN等。它们广泛应用在小范围,短距离的应用场合。  总线传输数据的方式是数字信号中的基带信号。基带传输是一种很古老的数据传输方式,它不对数据信号做任何调制处理。根据数字信号中的“0”和“1”处理方式的不同,基带信号又分为几种传输码波形。  我们最最常用的码行就是单极性非归零码,即高电平代表“1”,0V代表“0”。例如I2C,SPI等芯片级总线通讯。除此之后,还有其他的码,例如双极性非归零码,正电平代表“1”,负

2021-07-06 17:55:30 627

原创 1 CAN

CAN总线,全称Controller Area Network,控制器局域网络,是由德国博世BOSCH公司于1986年专门为汽车行业开发的一种串行通信总线,BOSCH公司以研发生产汽车电子产品和提供汽车解决方案著称,直到现在也是汽车领域知名的企业。

2021-07-06 17:35:49 2592

原创 系统运维—1.0 解压缩

一、zip和unzip  一般情况下,windows中的压缩包都是rar或者zip格式,对应的压缩软件为winzip和winrar。winzip是免费的,winrar是收费的。rar比zip压缩率更高,即同样的文件压缩完后体积更小,同时因为国内盗版,以及winrar安装后,右击默认压缩为rar的原因,导致国内的rar的使用率远超zip。  放眼全世界,zip的使用率反而远超rar,在ubuntu中,zip是默认安装的,免费使用,而rar需要额外安装,并且收费。故在linux中一般情况下,我们使用zip格

2021-07-06 17:02:56 1070

原创 环境搭建—3.0 Linaro gcc

一、gcc  gcc,GNU Compiler Collection,GNU编译器套件,它是linux下使用最广泛的c/c++编译器,linux内核都是用它编译的,大多数的linux发行版本都默认安装。gcc的优点:  1、支持众多的编程语言,不仅支持c/c++,还支持java,objective-c等语言。  2、支持主流处理器,有良好的可移植性,例如arm、i386等。  3、具有丰富的配套工具链支持,从名字可以看出,gcc是一个套件,并不是一个单纯的编译器,故它可以与调试工具gdb等工具配套使

2021-07-06 16:15:55 4283

低功耗蓝牙开发权威指南

《低功耗蓝牙开发权威指南》通过与经典蓝牙作对比,详尽介绍了将深入影响下一次无线技术革命的低功耗蓝牙技术的产生、设计、工作原理及其良好的节能、抗干扰特性和灵活、简单的开发特点。本书分为四个部分,分别阐述了低功耗蓝牙技术及其控制器、主机的工作原理,以及应用程序的设计开发,适合从事低功耗蓝牙产品开发工作的工程师、应用程序开发人员、设计师或市场营销人员等各类读者阅读。

2017-12-15

空空如也

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

TA关注的人

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