- 博客(53)
- 资源 (7)
- 收藏
- 关注
转载 ARM开发各种烧写文件格式说明(ELF、HEX、BIN)
一、ELFExecutable and linking format(ELF)文件是x86Linux系统下的一种常用目标文件(object file)格式,有三种主要类型: (1)适于连接的可重定位文件(relocatable file),可与其它目标文件一起创建可执行文件和共享目标文件。 (2)适于执行的可执行文件(executable file),用于提供程序的进程映像,加载的内存执行。 (3)共享目标文件(shared object fi...
2020-12-08 15:58:46
1349
原创 在stm32实现类似于映射表的配置文件
在stm32实现类似于映射表的配置文件需求:配置文件需求,因为现在的固件代码基本做成通用类型,而特定的定制需求,则从配置文件中读取。故将一个大数组(映射表功能)存入stm32 的flash中,作为程序的预读取,即在上电之后,程序需要从该地址读取一次数据,若读取成功,则正常执行逻辑代码。确定falsh 的可用地址,博主使用stmf103c8t6,从该芯片的性能上来看,可用flash的地...
2019-06-26 14:16:50
1033
原创 02 字符串分割保存为16进制
function chartonum(c) local num=0 if (c>=97 and c<=102) then --a-f num = 10 + c - 97 elseif (c>=65 and c<=70) then --A-F num = 10 + c - 65 elseif(c>=48...
2018-10-09 10:20:14
581
原创 01 字符串分割存入数组
function strHexToTable(sta,breakup_flag) local tableSta = {} local i,j,beilu beilu = breakup_flag j = 0 for i=1, ((#sta)/beilu) do tableSta[i] = string.sub(sta,1+j*beilu,be...
2018-10-09 10:16:53
1041
转载 01 wifi一键配网smartconfig原理及应用
智能家居/家电现阶段还处于普及阶段,由于家庭wifi网络的普及,目前普遍采用wifi与路由器完成连接,与手机/云端进行数据交互.智能硬件,如智能插座,智能空调,智能空气净化器由于不具备人机交互界面,不能像电脑一样的搜索/选择指定路由器,输入连接密码的界面,所以必须先解决正确连接路由问题;目前流行的wifi配置模式一般有以下2种:1:智能硬件处于AP模式,手机用于station模式,手机...
2018-09-12 10:02:50
450
转载 TCP/IP 协议的发送与接收
一、TCP数据报结构以及三次握手TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。TCP建立连接时要传输三个数据包,...
2018-08-06 10:36:18
21300
2
原创 03 多线程编程的注意事项
processing 内置了一个线程函数 thread();按照博主的个人理解 ,基本说明如下:类似于一般的processing程序,其遵循特定的一系列步骤:SETUP(),然后在一个循环中一遍又一遍地draw()。线程也是一系列的开始、中间和结束的步骤。一个处理草图是一个单线程,通常被称为“动画”线程。然而,其他线程的序列可以独立于主动画循环运行。事实上,一次可以启动任意数量的线程,...
2018-08-03 17:55:03
303
原创 07 Processing与openmv的IP自适应的思路
首先,为什么要IP自适应,在使用ESP8266的时候但凡使用到了TCP或者UDP协议,都不可避免的需要对IP进行指定:那么问题来了,当使用8266作为原型机进行测试的时候,在局域网内IP基本是DHCP自适应分配的,那么当ip在不断变换的时候,我们总不可能每次都烧写代码,所以有了一个IP自适应的想法,每次服务器的IP在变换的时候,客户端的8266将其自适应的进行设置。算法思路:UDP...
2018-07-20 16:49:02
507
原创 06 OPENMV中的AT指令集操作
最近一个项目需要使用wifi模块进行图片的传输,传输协议采用tcp协议,使用模块为经典的ESP8266,在此和大家分享一下在OPENMV中使用AT指令集遇到的一些问题:1:使用AT指令集一个基本常识就是一定要在AT指令后面加入回车换行符,在java中为string类型的“\r\n”,在C中为uint8_t类型的0x0D,0x0A,在openmv中我的方式是使用一个bytearray存储两个字符...
2018-07-19 16:27:35
1342
3
原创 FreeRTOS中使用CubMX队列创建队列函数osMessageQDef的坑
废话不多说,创建一个队列,在cubeMX下自动生成代码如下osMessageQDef(ESP8266SendQueue, 256, 8); ESPSendQueueHandle =osMessageCreate(osMessageQ(ESP8266SendQueue), NULL);该队列意义在于生成256个item,每个item大小8个字节 使用队列最主要是作为数据传输的载体,现在可以很简单的测...
2018-06-15 17:09:25
9376
12
原创 FreeRTOS中队列复写的问题
FreeRTOS应该是所有嵌入式人员都经常使用的操作OS了,最近博主在使用的时候遇到了一个问题,具体情况如下:在hal库中,其封装好了队列QUEUE的复写函数 xQueueOverwrite( xQueue, pvItemToQueue )那么其宏定义如下 #define xQueueOverwrite( xQueue,pvItemToQueue ) xQueueGeneric...
2018-06-04 17:24:33
2989
3
原创 05 对openMV的一些保护处理 —— 运行内存
使用OpenMv进行内存测试可以发现,在MicroPython语法中内存是一直增量的,测试可调用库函数gc.mem_free()进行内存测试,在博主的程序中可以发现一开始的空余内存为52k,然而随着时间的增长它的内存越来越小(只有一个while循环),当内存跑到0k的时候重置为52k,这个过程可能来自于micropython的语法结构,毕竟不同于传统的高级语言,定一个内存块进行赋值的逻辑。那么...
2018-05-21 16:51:28
3756
2
原创 02 Processing 的树莓派开源上传工具
目标——在processing上编程驱动树莓派的小灯对于新的树莓派3,具有两个LED,LeD0和LeD1,可以通过LED类在处理过程中进行控制。由于常规用户(命名为PI)默认不允许写入LED设备,因此必须通过命令来启用。 sudo sed -i's|exit 0|chmod -R a+rw /sys/class/leds/*\nexit 0|' /etc/rc.local...
2018-05-15 14:18:13
968
5
原创 04 对find_blobs函数的探究 ---- 神奇的area_threshold,pixels_threshold
按照官网的说法:If a blob’sbounding box area is less than area_threshold it is filteredout.If a blob’spixel count is less than pixel_threshold it is filteredout.就是说该值是一个阈值,当我们找到的blobs不满足其中任何的值的时候,则视为找不到blobs,...
2018-05-15 11:34:05
4514
原创 03 对find_blobs函数的探究 ---- 查找blobs的方式
函数说明请看博主第一条博文。有一个问题,还是这种图形:在我们以一个固定的相框进行查找的时候(本图是采用256*8的大小),如果我们需要对blobs进行查找,还是会调用find_blobs函数进行查找,然后在该for循环下对blob的对象进行操作,那么问题来了,blob查找的顺序是怎么样的?代码和第一条博文一样for blob in img.find_blobs([thresholds],roi=(...
2018-05-03 17:47:04
6560
原创 02 find_blobs函数的探究 ---- 效率
基础怎么用官网说的太多了,但是就博主使用的过程中,有些坑还是要提醒下同样使用OpenMv的同学。首先贴出官网对于该函数的说明:image.find_blobs(thresholds[, roi=Auto,x_stride=2, y_stride=1, invert=False, area_threshold=10,pixels_threshold=10, merge=False, margin=0...
2018-05-03 17:31:46
6522
2
原创 01 OpenMv的自我理解
Openmv是国外的一种基于micropython驱动的开源机器视觉模块,在机器视觉算法上,已经做了很大的优化,可以很好的在MCU上快速运行,比如颜色跟踪,脸部检测等;并且引出了相关的外设,比如SPI,IIC等,方便客户进行扩展。官方还有一个与之匹配的IDE(源码开源),具有编辑器,调试终端,具有RGB直方图显示的帧缓冲区查看器。 这款号称单片机版的机器视觉处理模块功能比较强大,...
2018-04-24 11:31:44
1341
原创 01 Processing软件的自我理解
对于我们嵌入式开发人员来说, PC 程序编程能力有限,而目前的智能硬件设计几乎离不开通讯。为便于硬件调试和测试,迫切需要利用PC实现相应测试的工具软件,指望现成的几乎不可能,由软件人员协助编写会对双方的工作产生干扰,故最好是硬件人员自己解决。 当下来说,硬件人员熟练掌握 VS、eclipse等IDE有点困难,而且分心。 Processing 是一个开...
2018-04-24 11:22:31
1751
转载 HAL库中USART需要注意的地方
HAL库是比较全面的,封装比较彻底的,也是功能比较强大的。使用HAL库,我们直接调用它的API函数,不用关心它的底层操作过程。使用HAL库,省去了好多繁琐的处理过程,不再需要我们自己写如等待等过程。HAL库也包含如Ethernet、USB等高级外设的驱动。对于初接触它的人来说,尤其是用惯了标准库的人,总会有各种不适应和排斥感。就拿UART来说,我们通过中断方式接受或发送数据。如果仿真调试的话,会发...
2018-03-09 10:56:16
14621
2
原创 SWD调试在STM32中REMAP调试的深入探究
首先说一下问题的现象,如果有这种现象的同学可以看看博主的这篇博文程序download一次后,第二次download就提示no target connect,除非长按reset键才能继续下载程序首先上一组stm32的TIM2的端口使用组合有下面四种:1.当不重映射时,默认TIM2四个的IO口是PA0、PA1、PA2、PA3开启重映射__HAL_AFIO_REMAP_TIM2_ENABLE()2.要使...
2018-03-06 11:53:38
4018
1
原创 冷启动与热启动在STM32基于RTOS编程中需要注意的地方
冷启动与热启动估计是在大多数入门学51的时候接触到的知识,总结一下: 所谓冷启动,也就是一般所说的上电复位,冷启动后片内外RAM的内容是随机的,通常是0x00或0xFF;单片机的热启动是通过外部电路给运行中的单片机的复位端一复位电平而实现的,也就是所说的按键复位或看门狗复位。复位后,RAM的内容都没有改变。 一般来说我们不需要对此特别注意,在对STM32的程序设计中,涉...
2018-02-28 13:18:44
2090
转载 HardFault_Handler故障的原因
STM32出现HardFault_Handler故障的原因主要有两个方面:1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。2、堆栈溢出。增加堆栈的大小。出现问题时排查的方法:发生异常之后可首先查看LR寄存器中的值,确定当前使用堆栈为MSP或PSP,然后找到相应堆栈的指针,并在内存中查看相应堆栈里的内容。由于异常发生时,内核将R0~R3、R12、Returnaddre...
2018-02-12 11:16:59
59849
1
原创 基于STM32的常用数码管芯片TM1637驱动
店家给的是51或者arduino的,花了点时间移植一下;IIC协议这里就不多说了;使用模拟IIC口 定义B14 B15#define AnalonSDA_Pin GPIO_PIN_12#define AnalonSDA_GPIO_Port GPIOB#define AnalonSCL_Pin GPIO_PIN_13#define AnalonSCL_GPIO_P
2018-01-30 17:16:02
12830
4
原创 基于STM32的常用数码管芯片TM1650驱动
店家给的是51或者arduino的,花了点时间移植一下;IIC协议这里就不多说了;使用模拟IIC口 定义B12 B13#define AnalonSDA_Pin GPIO_PIN_12#define AnalonSDA_GPIO_Port GPIOB#define AnalonSCL_Pin GPIO_PIN_13#define AnalonSCL_GPIO_Port GP
2018-01-29 17:57:21
13022
3
转载 三极管常见状态
以 NPN 型三极管为例,如下图:两个 PN 结共用了一个 P 区(也称基区),基区做得极薄,只有几微米到几十微米,正是靠着它把两个 PN 结有机地结合成一个不可分割的整体,它们之间存在着相互联系和相互影响,使三极管完全不同于两个单独的 PN 结的特性。三极管在外加电压的作用下,形成基极电流、集电极电流和发射极电流,成为电流放大器件。三极管的电流放大作用与其物理结构有关,三极管内部进行
2018-01-22 15:39:57
2880
原创 STM32CUBEMX 中断管理
使用cube开发工具进行开发,使用HAL库,有一个问题就是当我们在cube界面配置完成后“以为完全配置好了”,结果在实际代码编写的时候回发现常见以下问题:1:中断没配置2:优先级没配置这里简单分析以下手动开启中断的配置 取两个例子example1:如何在无法改动cube工程的情况下 使能外部中断step1gpio.c 中 GPIO_InitStruct.Pin = M
2018-01-19 18:18:28
3094
原创 毕业后6个月的总结
和学校相比,社会真的是大杂烩。博客好久没更新了,总结一下,从17年7月毕业后到现在差不多6个月的时间,从学生到一个上班族的转变也差不多完成了。毕业前我会什么呢?(1)我会C语言的嵌入式编程,51、合泰,cortex-M3的K60也会一些。(2)PCB会画板会布线。(3)操作系统只会理论。(4)使用开发平台为KEIL 4。(5)上位机只会一些c#。(6)没有自己的博客
2018-01-09 17:27:43
321
1
原创 UC/OS-II(二)自学笔记
(1)任务控制块空任务控制块链表OS_init()/任务控制块链表OSTaskCreat()OS_TCB类型的变量OSTCBCur,用来存放正在运行任务的任务控制块指针。OSTCBPrioTbl[]任务控制块优先级表(任务调度中使用)(2)任务就绪表OSRdyTbl[ ]和OSRdyGrp(记录OSRdyTbl中哪个任务组有任务就绪,最多64个任务可以管理)负责任务调度。这
2017-10-16 14:11:41
3626
转载 03 IO口的分析与使用
STM32 GPIO使用操作步骤:1. 使能GPIO对应的外设时钟例如://使能GPIOA、GPIOB、GPIOC对应的外设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC , ENABLE); 2. 声明一个GPIO_InitSt
2017-10-16 14:00:22
793
转载 UC/OS-II(一)资料绪论
第一篇 UCOS介绍第一篇 UCOS介绍 这个大家都知道。呵呵。考虑到咱们学习的完整性还是在这里唠叨一下。让大家再熟悉一下。高手们忍耐一下吧! uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作
2017-09-25 08:49:10
822
原创 02 STM32启动文件的理解
; Amount of memory (in bytes) allocated for Stack; Tailor this value to your application needs; Stack Configuration; Stack Size (in Bytes) ; Stack_Size EQU 0x00000400 ;1024个字
2017-09-05 15:58:03
512
原创 17 AVR中的定时器喂狗的作用
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)。其次,看门狗的工作原理是什么? 在系统运行
2017-09-05 15:51:47
1363
原创 01 组态王初探
组态王基本设置配置流程如下:(1)创建工程(2)创建工业画面(3)定义IO变量(使用设备配置向导,配置包括com口,IO设备,逻辑名称等等变量)(4)构造数据库(定义数据变量)(5)建立动画连接(简历画面与数据构造的关系以及进行相应的命令语言描述)其中比较重要的是定义IO变量以及构造数据库和简历动画连接的命令描述;对于定义IO变量:变量的基本类型共有两类:内存变
2017-07-19 10:44:16
6355
原创 01 stm32初探
ARM内核的stm32开发流程基本如下一是建立project并设置相关参数,根据需要的功能编写程序;二是编译和调试程序并生成HEX目标代码;三是将生成的HEX目标代码下载至目标板(DMSTM-L)中并查看现象。一、Keil MDK 编译环境项目的建立及参数设置1、项目建立与参数设置(1) 新建单个项目任何一个系统的开发和调试都是在选择的软件平台中实现的,在软件平台我们可
2017-06-21 20:04:31
609
原创 16 常用芯片使用
ADM3485的使用手册 RS 485接口芯片采用的是ADM3485。ADM3485采用单一电源+3.3 V工作,半双工通信方式,可完成将TTL电平转换为 RS 485电平的功能。 ADM34185芯片的结构和引脚都非常简单,内部含有一个驱动器和一个接收器,RO和DI端分别为接收器的输出端和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可。RE和DE端分别为接收和发送的使能
2017-06-20 07:50:01
1106
原创 15 中断延时
在epz项目中出现了一个BUG,客户反映当EPZ设备(485通信)单机测试的时候测试帧正常,但是当总线上串有其他的设备时,例如串上一台S型计数器时,则会发生通讯异常,具体测试例子如下,如果一个数据帧为 11 22 33 44 55 66 77 88 ,完整发送后应该接收epz从机发送的返回帧 11 22 ,单机通信的时候该处理完全没有问题,但是当串上一台S计数器时(该S计数器也有其固定的测试帧 例如
2017-06-20 07:47:12
815
原创 14 关于单片机死机的一些问题
博主在最近的一个项目中测试系统的高低温实验,结果意外的发现经过高低温实验后(80℃到-20摄氏度)单片机有些已经死机了,所以不得不着手研究一下这个问题,在网上查阅资料后,基本上可以归结于以下几个问题:1. 意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象 2. 中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先
2017-04-22 09:51:00
3547
原创 ADC的总结学习笔记
C8051F020/1 的ADC0 子系统包括一个9 通道的可编程模拟多路选择器(AMUX0),一个可编程增益放大器(PGA0)和一个100ksps、12 位分辨率的逐次逼近寄存器型ADC,(F020的ADC0只有一个逐次逼近的ADC,它能实现9路输入是因为它有一个9通道的多路选择器(AMUX0)))。片上的特殊功能寄存器(简称SFR)有11个与ADC0的控制相关,它们是:AMUX0SL-AM
2017-04-14 16:22:03
5831
arduino nano IIC 器件扫描
2018-01-03
STM32F10x硬件开发使用入门_cn
2017-09-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人