自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (3)
  • 收藏
  • 关注

原创 单片机flash不足,keil如下方式进行优化

单片机的flash不够的时候可以使用keil的优化等级进行优化;但是使用Opt进行优化的时候会遇到难以预料的错误,所以使用时要对一些变量进行标识,比如使用volatile关键字还有其他方式也能减少内存的使用比如添加如下Define...

2022-03-10 09:40:39 2004

原创 keil 修改RAM、ROM

2022-03-10 09:30:19 2131

转载 STM32片上Flash内存映射、页面大小、寄存器映射

本文以STM32F103RBT6为例介绍了片上Flash(Embedded Flash)若干问题,包括Flash大小(内存映射)、块大小、页面大小、寄存器。二、块大小Flash先分块再分页,擦除是按块进行,这样的说法应该只是对外置Flash而言,对于片上Flash即可以按页擦除也可以整块擦除。三、页面大小STM32有4种Flash module organization,分别是:low-density devices(32KB,1KB/page)、medium-density devices

2020-10-21 10:14:45 648

原创 stm32 串口打印输出定向

1. 串口1输出重定向我们知道printf是打印函数,原理是根据传入的字符串参数格式化打印输出到stdout中。我们需要让printf打印到串口之中,只需要在usart.c文件中模仿printf写一个输出函数即可在添加头文件 /* USER CODE BEGIN 0 */ #include <stdarg.h> #include <string.h> #include <stdio.h> /* USER CODE END 0 */ 写输出函数 /*

2020-10-10 09:02:00 370

原创 esp8266 串口打印更改为uart1

UART_SetPrintPort(UART1);更改为uart1 串口打印输出。

2020-10-09 15:48:49 1021 2

原创 ESP8266 烧录bin文件 以及输出hello world

1、使用的是nodemcu开发版进行开发,示例代码使用的是smart_config的示例工程,如果编译能够成功,则会出现如下图:将user_init(void)中的代码屏蔽 只留下os_printf("hello world")一行代码;make COMPILE=gcc BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=DIO SPI_SIZE_MAP=4;...

2020-09-23 16:41:16 1580

原创 stm32 使用jlink 下载出现he firmware of the connected J-Link does not support the following memory access

当使用jlink 进行下载程序的时候,出现以下错误提示dll文件出现问题,将keil文件夹中的JLinkARM.dll进行替换。需要把你安装JLINK驱动下keil5安装目录下的JlinkARM.dll用jlink安装目录下的JlinkARM.dll替换掉即可...

2020-08-21 19:10:44 703

转载 esp8266 driver_lib和包含头文件错误以及库函数找不到的问题

在SDK中编译MQTT例程,直接调用driver库中的函数UART_SetBaudrate(0,9600);如下图所示:编译时提示undefine的错误,如下图:解决办法:1.把driver_lib文件夹下的driver文件夹copy到mqtt_demo文件夹下面,把driver_lib文件夹下include里面文件copy到mqtt_demo文件夹下include里面,如下图所示:2.修改mqtt_demo文件夹下的makefile文件,如下图所示在SUBDIRS中添加dri.

2020-08-18 15:57:01 1155

原创 eclipse 找不到头文件

文件编译时找不到想要的头文件。先确定头文件的位置,然后在添加头文件路径~~点C++项目上右键,Properties -> C/C++ General -> Paths and Symbol -> Includes标签下Add

2020-08-14 16:13:34 3438

原创 FREEROST的heap heap分配

c语言中有两个概念经常一起被提及,堆和栈。栈一般是系统调用,用于函数调用中保存现场(局部变量等)。不难想象,函数调用中主函数往往是最先执行,调用其他函数,然后最后返回。而最深层次的函数(内部不调用其他任何函数的函数)往往是执行完就离开,所以使用栈管理函数调用最为合适。堆则一般是由程序员调用并管理。最直观的,一般malloc函数和free函数都是操作的这个空间,不过freeRTOS中一般则是使用freeRTOS中定义的函数(pvPortMalloc和vPortFree代替malloc和free函数)由

2020-07-30 18:55:23 333

原创 stm32 使用stm32 cubemx 库函数 串口接收数据的问题

使用stm32 cubemx 库函数 进行串口数据的接收,会有数据无法接收完整的问题,重复确定不是定时器定时时间的问题,最后确定为官方的库文件问题。。。。HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t pData, uint16_t Size){/ Check that a Rx process is not already ongoing */if (huart->RxState == HAL_

2020-07-09 16:35:02 450

原创 stm32 FREERTOS 操作系统 core_sysdep_malloc 分配失败的问题

stm32 freertos 操作系统遇到内存分配失败的问题 可以使用以下方式解决 buffer = sysdep->core_sysdep_malloc(buffer_len + 1, module_name); if (buffer == NULL) { return STATE_SYS_DEPEND_MALLOC_FAILED; }1、增加任务的栈空间osThreadDef(AlilinkTask, LinkTask, osPriorityHig...

2020-06-03 16:38:56 990

转载 STM32 JSON格式以及cJSON的使用及注意事项

前言在STM32 OTA例程中,设备端(STM32F769探索板)与云端交换数据使用的是JSON格式。在本篇文章中,将对JSON格式以及cJSON的使用及注意事项进行说明。JSON格式JSON(JavaScript Object Notation)是一个轻量级的数据交换格式。既便于开发者读写,也便于机器分析和构建。它独立于开发语言,是一种文本格式,很适用描述在各个系统间交换的数据。...

2020-05-06 13:52:08 4960

原创 ESP8266使用MQTT协议与EMQ

1、https://www.emqx.io/cn/downloads下载安装包2、Windows2.1、通过emqx.io或github选择 Windows 版本,然后下载要安装的 .zip 包。2.2、解压压缩包2.3、打开 Windows 命令行窗口,cd 到程序目录, 启动 EMQ X。cd emqx/binemqx start3、127...

2020-03-25 22:49:11 1833

原创 STM32L0 串口uart通讯 USART1_IRQHandler

使用stm32cubx生成工程后发现USART1_IRQHandler中断不能进入。下面这段代码进不去:void USART1_IRQHandler(void){ /* USER CODE BEGIN USART1_IRQn 0 */ /* USER CODE END USART1_IRQn 0 */ HAL_UART_IRQHandler(&huart1)...

2019-12-05 10:15:06 3958 1

原创 STM32CubeMx 安装与创建工程

安装步骤:第一步第二步安装应用程序打开快捷键选择使用的芯片创建工程:

2019-11-29 15:21:34 159

原创 ZIGBEE模块调试记录和总结

1、使用顺舟的zigbee模块。2、使用“超级终端” 读取模块的基本信息 进行参数的配置 注意超级终端的编码选择GB2312,否则出现乱码。3、主站 从站的配置。4、sz02可以配置数据源址输出 用以添加模块地址区分无地址数据。5、模块可以配置为中心节点或中继路由.6、传输方式可分为透明传输、按目标地址发送、点对点传输、数据源址输出。...

2019-07-16 17:30:53 682

原创 SHT10 温湿度传感器的程序以及调试总结

没有其他东西 直接上调试注意事项和代码!!调试要点:1、DATA加10K上拉电阻。2、注意示波器观察各个信号。基础要点:1、串行时钟输入(SCK)。单片机模拟时钟。2、串行数据(DATA)。用于发送命令和读取数据,当单片机向传感器发送命令时,DATA在SCK上升沿有效且在sck高电平时必须稳定。DATA在SCK下降沿之后改变。命令:“启动传输”时序。温度测量...

2019-07-05 13:47:15 4330

转载 STM32 GPIOx_CRL/GPIOx_CRH 寄存器

GPIOx_CRL/GPIOx_CRH(x:A~F)寄存器用来对GPIO进行端口设置,如:设置GPIO为输入模式或输出模式。每个寄存器含有32位,每4位用来设置1个GPIO引脚功能。GPIOx_CRL/GPIOx_CRH 两个寄存器共含有64位,因此可完成对GPIO0~15的设定。其中GPIOx_CRL用于设置GPIO0~7引脚,GPIOx_CRH用于设置GPIO8~15引脚。例如设置PB1...

2019-06-17 16:24:19 13105 5

原创 STM32的NVIC向量中断控制器概述

1、NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外,NVIC 还包含了 MPU、的控制寄存器、 SysTick 定时器以及调试控制。2、NVIC 共支持 1 至 240 个外部中断输入。NVIC 还支持一个“永垂不朽”的不可屏蔽中断(NMI)输入。3、中断的使能和除能:CM3 中可以有 240 对使能位/除能位,每个中断拥有一对。这 240 个对子分...

2019-06-17 11:50:20 1392

原创 C语言strcpy 、strcmp等库函数

1、strcpy原型声明:char *strcpy(char* dest, const char *src);头文件:#include <string.h> 和 #include <stdio.h>strcpy把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*。说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来...

2019-06-10 11:26:01 407

转载 嵌入式C volatile、const、define

2019-06-03 10:51:24 85

原创 GPS的指令GPGLL使用方法和代码

1、u-blox芯片2、ZBT TG621KGPS 上电后,每隔一定的时间就会返回一定格式的数据,数据格式为:$信息类型,x,x,x,x,x,x,x,x,x,x,x,x,x每行开头的字符都是'$',接着是信息类型,后面是数据,以逗号分隔开。一行完整的数据如下:$GPRMC,080655.00,A,4546.40891,N,12639.65641,E,1.045,328.42,1...

2019-05-24 17:28:08 2448

原创 linux与Windows创建共享文件夹

第一步:Windows中创建文件夹,文件夹的名称为英文。第二步:VMWARE中菜单栏的vm----setting----options--share Folads 右边上侧选择 总是启用;第三步:进入mnt/hfgs 看到winshare...

2019-05-05 11:58:10 878

原创 RS232、RS485和CAN协议总结与对比

一、RS232串口是计算机上一种非常通用的设备通信协议。串口的电气特性:1、RS-232串口通信最远距离是50英尺;2、RS232可做到双向传输,全双工通讯,最高传输速率20kbps ;3、RS-232C上传送的数字量采用负逻辑,且与地对称 逻辑1:-3 ~-15V 逻辑0:+3~+15V; 缺点:1、RS-232-C的电气接口电路采取的是不平衡传输方式,即所谓单端通讯...

2019-04-29 13:43:30 16968 1

原创 安装vsftp时出现错误

1、安装vsftp时出现错误/usr/bin/ld: cannot find -lcapcollect2: ld returned 1 exit statusmake: *** [vsftpd] Error 1解决方法:安装libcap-devel2、安装libcap-devel2.1, 环境: Ubuntu12.04 + libpcap-1.9.0.tar.gz...

2019-04-23 17:24:10 785

原创 Linux-ARM 指令echo、insmod等

Linux-ARM1、echo设置触发条件为系统心跳,如下:root@freescale /$ echo heartbeat > /sys/class/leds/led1/trigger将内容输出到文件里echo "hello world!" > test1.tmp2、catcat主要有三大功能:1.一次显示整个文件。$ cat filename2....

2019-04-22 15:20:26 371

原创 VMware以及Linux自定义安装

自定义安装能够避免自动安装过程中的一些问题打开虚拟机点击创建新的虚拟机先选择“稍后安装操作系统(s)”看一下纯净版的操作系统选择操作系统和版本创建虚拟机的名称和选择安装位置,此处选择安装在D盘(保证空间足够100G左右)点击“自定义硬件” 如图配置(计算机的配置不同,虚拟机配置会有差异)点击“添加”添加一个串口配置...

2019-04-14 14:46:59 854

原创 UART、SPI和IIC详解与比较(超级实用的调试经验)

1、UART UART有4个pin(VCC, GND, RX, TX), 用的TTL电平, 低电平为0(0V),高电平为1(3.3V或以上)UART使用的是异步串行通信UART是两线,一根发送一根接收,可以全双工通信,线数也比较少数据传送速率用波特...

2019-04-10 13:52:47 7484 2

转载 STM8 看门狗

1、独立看门狗(IWDG)        由于受到电磁干扰、静电干扰、放电和浪涌噪音等其他形式的干扰,MCU程序计数器PC可能去执行一些无意义、错误的或者死循环的程序段,使单片机发生程序跑飞或者死机,这个时候就需要看门狗技术。看门狗的基本功能是发现CPU运行不正常时复位CPU,强制CPU重新启动。看门狗技术一般只对瞬间干扰造成的问题有效,如果是长时间的干扰,看门狗的意义不是很大。所以独立看门狗...

2019-01-08 13:30:22 1255

转载 敷铜高频情况下干扰噪声去除

        在高频情况下,印刷电路板上的布线的分布电容会起作用,当长度大于噪声频率相应波长的1/20时,就会产生天线效应,噪声就会通过布线向外发射。从上面这个实际测量的结果来看,PCB上存在一个22.894MHz的干扰源,而敷设的铜皮对这个信号很敏感,作为“接收天线”接收到了这个信号,同时,该铜皮又作为“发射天线”向外部发射很强的电磁干扰信号。我们知道,频率与波长的关系为f= C/λ。式中f为...

2019-01-07 16:25:47 767

原创 超声波换能器的几点总结

超声波换能器是超声波测量的关键件,必须保证超声波换能器的质量以及特性稳定。1、超声波换能器的激励信号频率接近谐振频率是触发信号强度最大。2、传感器是被动元器件,激励信号进行激励会产生震动,接收端接收信号,长时间的激励(比如连续激励500次)不会有明显性能的变化。3、传感器的性能受温度影响,需要进行温度补偿。4、换能器的温度影响特性的变化是可逆的。特性的变化基本不大,主要是压电陶瓷片的变化特性。...

2018-03-29 12:55:26 7764 7

转载 msp430看门狗定时器

看门狗定时器用来防止程序因供电电源、空间电磁干扰或其它原因引起的强烈干扰噪声而跑飞的事故。在很多单片机中都内置了看门狗,看门狗本身是一个定时器,当定时器溢出时即进行系统复位,因此需要在程序中对看门狗定时器进行清零,即常说的喂狗。由于我用过AVR的单片机,和AVR的相比,MSP430的看门狗要灵活的多,首先默认看门狗是开着的,因此如果不使用看门狗的话要关闭,指令如下:WDTCTL = WDT

2016-10-14 14:12:27 1183 1

转载 “#if 0/#if 1 ... #endif”

通常使用“/*.......*/”写代码中说明性的注释文字(注释作用)以及在调试时关闭某段代码对编译器的可见性(屏蔽作用),当然,这里所谓的“注释作用”和“屏蔽作用”是我们从功能上下的主观定义,对预处理器而言,两者并无任何区别。对于前者,因为“注释”中不会再出现“注释”和“需要屏蔽的代码段”,所以不会有嵌套的需求,因此通常也不会有问题;而对于后者,当我们在调试程序时需要“屏

2016-10-11 13:16:38 339

转载 strcpy与memcpy区别

strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。

2016-10-11 11:40:43 333

原创 #ifndef

#ifndef x //先测试x是否被宏定义过#define x程序段 1 //如果x没有被宏定义过,定义x,并编译程序段 1#endif程序段 2 //如果x已经定义过了则直接编译程序段2的语句,跳过程序段 1。条件指示符#ifndef 的最主要目的是防止头文件的重复包含和编译。了解:条件编译当然也可以用条件语句来实现。 但是用条件语句将会对整个源程序进行

2016-10-11 10:35:48 1525

转载 寄存器的设置要注意

在写 单片机是对 寄存器的设置要注意,有很多外设可能用这一个寄存器,在外设初始化的时候或对寄存器修改是可能会影响到其他外设的正常工作,今天就遇到这样一个蛋疼的问题,  这是我初始化程序中的一段代码节选:  void init_timer0(void)  {  ...  TIMSK=0X01;//使能溢出中断,大概16ms一次  }  void

2016-07-09 20:48:21 1222

转载 ucs配置

MSP430F5XX/MSP430F6XX系列器件的UCS包含有五种时钟源,依次是:XT1CLK、VLOCLK、REFOCLK、DCOCLK和XT2CLK。这五种时钟的详细介绍请参考该系列芯片的指导手册(1)XT1处于LF模式作为XT1CLK时钟源。ACLK选通为XT1CLK。(2)MCLK选通为DCOCLKDIV(3)SMCLK选通为DCOCLKDIV(4)FLL使能,且

2016-06-23 13:25:25 453

转载 电源与地之间接电容的原因

1、电源与地之间接电容的原因有两个作用,储能和旁路储能:电路的耗电有时候大,有时候小,当耗电突然增大的时候如果没有电,电源电压会被拉低,产生噪声,振铃,严重会导致CPU重启,这时候大容量的电容可以暂时把储存的电能释放出来,稳定电源电压,就像河流和水库的关系旁路:电路电流很多时候有脉动,例如数字电路的同步频率,会造成电源电压的脉动,这是一种交流噪声,小容量的无极电容可以把这种噪声旁路到地(电容可

2016-05-30 16:01:17 2132

转载 MOS管

MOS管一般又叫场效应管,与二极管和三极管不同,二极管只能通过正向电流,反向截止,不能控制,三极管通俗讲就是小电流放大成受控的大电流,MOS管是小电压控制电流的,MOS管的输入电阻极大,兆欧级的,容易驱动,但是价格比三极管要高,一般适用于需要小电压控制大电流的情况,电磁炉里一般就是用的20A或者25A的场效应管

2016-05-04 18:35:33 360

feertos电子文档

文档

2021-01-14

OBD硬件协议.zip

OBD汽车硬件协议,包括乘用车故障码,PID协议等等

2019-08-15

芯片资料.zip

芯片资料.zip

2016-09-14

空空如也

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

TA关注的人

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