自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Modbus RTU ASCII

二、两种传输方式 控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信。用户选择想要的模式,包括串口通信参数(波特率、校验方式等),在配置每个控制器的时候,在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。ASCII模式: 地址 功能代码 数据数量 数据1 ... 数据n LRC高字节 LRC低字节 回车 换行RTU模式地址 功能代...

2018-09-03 18:41:43 3590

转载 STM32软件复位的实现方法

前些天写程序的时候,需要做一个自动复位的功能,也就是当收到外部通讯设备复位指令时,主设备立刻执行复位操作。当时是想到的用看门狗实现。但是觉得似乎不太妥当,因为看门狗的复位是需要一定的时间。而在这段时间内系统还是处于正常运行当中,而且所有中断都会正常响应。这恰好与要实现的功能南辕北辙。需求是当收到复位指令时,系统停止执行后面的所有操作,包含中断响应。所以看门狗无法实现。         我用的是...

2018-07-22 16:17:53 40781 3

转载 STM32F4系统时钟设置之二

STM32F407系统时钟配置时钟树方法一,采用官方库提供的配置(这里外部晶振25MHz,系统配置为168MHz)STM32F4启动与STM32F10X不同,时钟已经默认配置好启动代码,文件:startup_stm32f4xx.sReset handler Reset_Handler PROC EXPORT Reset_Handler ...

2018-05-29 21:49:43 2784 2

转载 STM32F407时钟设置

这里我们写一个RCC配置函数来说明各函数的用途,其中HSE = 8MHz。 /**  *  @说明  配置STM32F407的时钟系统  * @参数  无  * @返回  无  * @说明  void Clock_Config(void) 按如下表格配置时钟  **==================================================================*...

2018-05-29 20:27:44 3030

转载 STM32时钟配置方法详解

一、在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。①HSI是高速内部时钟,RC振荡器,频率为8MHz。②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。③LSI是低速内部时钟,RC振荡器,频率为40kHz。④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、H...

2018-05-28 11:44:53 18061 3

转载 STM32 KEIL _MAP文件解析

0、写在前面相信有较大项目开发经验的朋友都曾遇到内存溢出的问题,那么大家都是如何分析这类问题的呢?大家遇到HardFault_Handler 有对map分析过吗? 首先讲述一下关于map在MDK-ARM中的配置。其实,在MDK-ARM中,我们可以根据自己的情况(不同配置),在map文件中输出对应(我们需要)的内容。默认情况下,输出所有信息。 Project -> Options for Ta...

2018-04-23 11:45:15 1920

转载 STM32硬件错误HardFault_Handler的处理方法

  在用Keil对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中。这说明STM32出现了硬件错误。        STM32出现硬件错误可能有以下原因:        (1)数组越界操作;        (2)内存溢出,访问越界;        (3)堆栈溢出,程序跑飞;        (4)中断处理错误;      ...

2018-04-23 11:40:48 5290

转载 stm32使用MDK开发中的一些常见问题

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://no001.blog.51cto.com/1142339/8571171. 解决:keil报错invalid redeclaration of type name "s32"答案:一般在Target Options C/C++选项卡里的Include Paths 里要添加几个固定的...

2018-04-23 11:37:47 2077

转载 STM32 硬件错误HardFault_Handler的真凶

STM32出现HardFault_Handler故障的原因主要有两个方面:1、内存溢出或者访问越界。2、堆栈溢出。最近遇到的问题是栈溢出,情况是这样的,举例说明:static char data[10000];void fun1(unsigned char *buf){int  i=0;for(i=0; i<5000; i++){data = buf;}}void fun2(void){un...

2018-04-23 10:37:57 16589 1

转载 STM32学习笔记之__attribute__ ((at())绝对定位分析

学习STM32也会遇到这样的绝对定位的问题如下:uint8_t   UART_RX_BUF[1024]   __attribute__ ((at(0X20001000)));   //就是将串口接收的数据定位到RAM中起始地址为0X20001000;绝对定位要么定位到flash、要么定位到RAM,这里我们将定位在flash进行说明。MDK如何实现将数据存储到FLASH指定地址?      我们在烧...

2018-04-23 10:18:39 3747

转载 STM32的堆与栈

上一篇博客解决了因为堆栈的设置空间不够而引发的“命案”,这次我们就来看看它的“杀人动机”。首先我们来认识一下堆与栈的含义():​​(1)栈区(stack):由编译器自动分配和释放,存放函数的参数值、局部变量的值等,其操作方式类似于数据结构中的栈。(2)堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收。分配方式类似于数据结构中的链表。(3)全局区(静态区)(st...

2018-04-23 10:12:26 2123 1

转载 STM32的内存管理和堆栈相关的认知

今天仔细读了一下内存管理的代码,然后还有看了堆栈的相关知识,把以前不太明白的一些东西想通了,写下来,方便以后查看,也想大家看了能指出哪里不对,然后修改。    首先,先看一下stm32的存储器结构。​Flash,SRAM寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。可访问的存储器空间被分成8个主要块,每个块为512MB。FLASH存储下载的程序。SRAM是存储运行程序中的数据。所以,只...

2018-04-23 10:02:59 621

转载 一个关于使用STM32F4芯片CCM RAM时的异常分析

前言有客户用STM32F427芯片,程序将CSTACK放在CCM RAM中,结果测试过一段时间的板子都出现了不能正常运行的情况。这个现象一度让我们怀疑是否是CCM RAM在测试过程中遭到了破坏,导致我们在解决问题的道路上浪费了不少时间。事实证明STM32的CCM RAM并没有那么脆弱,而解决问题时尽力从多个角度进行验证,不放过所有可能出问题的环节之心态更为重要。在具体讨论问题的原因之前,不妨先介绍...

2018-04-23 09:26:34 2776 2

转载 浅谈C++/JAVA/C#运行机制和执行效率

浅谈C++/JAVA/C#运行机制和执行效率       估计有很多同学都对C++/JAVA/C#这三大热门语言的运行机制和执行效率有或多或少的困惑,自己也有,但是经过前期的学习,了解了三者在这两方面的区别,就废话不说了,进入主题吧。        一、运行机制       1、JAVA-编译和解释型语言          一个JAVA文件,首先会由JAVA编译器(JAVAC)编译成class(字...

2018-04-23 00:09:29 1735

转载 关于STM32的CPU的使用率~裸机不带系统

1. 如果你不跑操作系统,CPU肯定一直都是100%使用的,哪怕你里面是延时等待,CPU也是一直在执行空语句nop,因为STM32里面是有一个CPU。2.对于stm32总是百分百。只是有多少时间空闲,多少时间干活!3.楼主的意思是实际CPU用来干正事的时间,在整个时间里的比例,打个比方,如果工作50mS,再等待200mS,完成一个大循环,那么CPU的使用率就是20%。如果楼主的程序是以大循环方式做...

2018-04-21 14:27:09 8581 1

转载 STM32串口第一个字节丢失问题的分析过程

STM32串口发送必须先检测状态,否则第一个字节无法发出,发送完毕,必须检测发送状态是否完成,否则,发送不成功,使用stm32f10x调试串口通讯时,发现一个出错的现象,硬件复位重启之后,发送测试数据0x01 0x02 0x03 0x04..接收端收到的数据为:0x02 0x03 0x04,第一个数据丢失。换成发送别的数值的数据,如0x06 0x0ff,则接收到0x0ff,0x06丢失。错误依旧。...

2018-04-18 22:29:26 3115 1

转载 STM32大小端模式与堆栈及其增长方向

栈增长和大端/小端问题是和CPU相关的两个问题.1,首先来看:栈(STACK)的问题.函数的局部变量,都是存放在"栈"里面,栈的英文是:STACK.STACK的大小,我们可以在stm32的启动文件里面设置,以战舰stm32开发板为例,在startup_stm32f10x_hd.s里面,开头就有:Stack_Size      EQU     0x00000800表示栈大小是0X800,也就是204...

2018-03-18 14:50:37 778

转载 stack_size和heap_size大小设置

 裸机程序里面这两个值  在程序中我要怎么计算才能知道分配多少合适?1,Stack Size,一般小工程0X400足够,我们综合实验才设置0X1000就够用,所以默认无需设置太大。2,Heap Size,如果没有用到标准库的malloc,就是废物,纯属浪费内存,所以直接设置为0即可。...

2018-03-18 14:48:08 47295 3

转载 STM32F4中GPIO_PuPd寄存器设置上拉与下拉问题

首先 上下拉 是给IO一个默认的状态 比如控制EN的话,那么高有效的我们就下拉,低有效的话我们就上拉而 很多IO 由于CMOS工艺问题会出现float的现象,所以不能悬空 需要PU PD。上拉和下拉是指GPIO输出高电位(上拉)还是低电位(下拉)。上拉就是输入高电平,然后接一个上拉电阻(起保护作用),知道上拉就表示该端口在默认情况下输入为高电平。下拉就相反了,指输入低电平,然后接一个下拉电阻...

2018-02-20 17:58:22 2925

转载 STM32定义堆栈地址到ram区顶部

本设置针对stm32f103rbt6的设置,该芯片RAM大小为20kB,故RAM区地址范围为0x20000000—0x20005000,芯片信息如下图所示;第一步:设置.sct文件;;*************************************************************; *** Scatter-Loading D

2018-01-01 22:48:08 5358 4

转载 RO RW ZI-Data之经典描述

ARM编译中的RO、RW和ZI DATA区段2008-12-17 14:58ARM程序(指在ARM系统中正在执行的程序,而非保存在ROM中的bin文件)的组成一个ARM程序包含3部分:RO段,RW段和ZI段RO是程序中的指令和常量RW是程序中的已初始化变量ZI是程序中的未初始化的变量由以上3点说明可以理解为:RO就是readonly,RW就是read/write

2018-01-01 22:44:00 342

转载 校准与标定

标定的主要作用是:  1)确定仪器或测量系统的输入—输出关系,赋予仪器或测量系统分度值;  2)确定仪器或测量系统的静态特性指标;  3)消除系统误差,改善一起或系统的正确度。  在科学测量中,标定是一个不容忽视的重要步骤。     必须依靠专用的标准设备来确定传感器的输入-输出转换关系,这个过程就称为标定。简单地说,利用标准器具对传感器进行标度的 过程称为标定。具

2017-12-31 12:52:11 4011

转载 STM32F4的CCM之二

前言有客户用STM32F427芯片,程序将CSTACK放在CCM RAM中,结果测试过一段时间的板子都出现了不能正常运行的情况。这个现象一度让我们怀疑是否是CCM RAM在测试过程中遭到了破坏,导致我们在解决问题的道路上浪费了不少时间。事实证明STM32的CCM RAM并没有那么脆弱,而解决问题时尽力从多个角度进行验证,不放过所有可能出问题的环节之心态更为重要。在具体讨

2017-12-31 11:46:54 2459

转载 STM32F4的CCM内存之一

我们知道STM32F4当中有个CCM内存,如图所示,这个内存是挂在D总线上直接和内核相连,因此除了内核之外谁都不能访问,那么我们怎么将其利用起来呢? 首先,我们可以使用Keil的设置选项,将IRAM2打勾,让编译器选择什么时候使用这个内存。显然,我们还可以将这两个地址修改一下,将IRAM1改为0x10000000,这样,编译器就会优先分配CCM内存。

2017-12-31 11:22:14 3493

转载 ARM全解析 ARM8/ARM7/A9/A15等区别

泡泡网CPU频道12月19日 前不久ARM正式宣布推出新款ARMv8架构的Cortex-A50处理器系列产品,以此来扩大ARM在高性能与低功耗领域的领先地位,进一步抢占移动终端市场份额。Cortex-A50是继Cortex-A15之后的又一重量级产品,将会直接影响到主流PC市场的占有率。围绕该话题,我们今天不妨总结一下近几年来手机端较为主流的ARM处理器。   以由

2017-12-21 13:04:35 25934 1

转载 linux与andriod区别

大家都知道Android是基于Linux内核的操作系统,也曾经和Linux基金会因为内核问题产生过分歧,本文将开始对Android的内核进行剖析,主要介绍Android和Linux之间的关系,后续还会讲到Android系统在Linux系统之上扩展的部分功能和驱动。  虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自己所

2017-12-21 11:48:47 972

原创 STM32之内存五 (attribute at属性)

http://www.keil.com/support/man/docs/armcc/armcc_chr1359124981140.htm

2017-12-18 13:48:22 1340

转载 STM32内存之四(CCM)

CCM - 极致发挥STM32F4性能的利器 (2012-06-27 21:35:42)转载▼标签: stm32 ccm it分类: 嵌入式CCM(Core Coupled Memory)是给F4内核专用的全速64KB RAM, 它们没有经过总线矩阵, F4内核与之直接相连, 地址空间在0x

2017-12-18 13:19:58 5385

转载 内存之三

(深入理解计算机系统) bss段,data段、text段、堆(heap)和栈(stack) bss段:  bss段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。  bss是英文Block Started by Symbol的简称。  bss段属于静态内存分配。   data段:  数据段(data

2017-12-18 11:35:16 193

转载 STM32内存之二

2017-12-15 18:23:59 291

转载 UART与USART区别

USART:通用同步和异步收发器UART:通用异步收发器当进行异步通信时,这两者是没有区别的。区别在于USART比UART多了同步通信功能。这个同步通信功能可以把USART当做SPI来用,比如用USART来驱动SPI设备。同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。  异步是指:发送方发出数据后,不等接收方发回响应,接着发送下

2017-11-26 10:32:48 35280 6

转载 如何正确理解开漏输出和推挽输出

作者:知乎用户链接:https://www.zhihu.com/question/28512432/answer/41217074来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。我觉得下面这个「网上资料」还是很不错的。单片机I/O口推挽输出与开漏输出的区别(转)===================分割线================

2017-11-19 06:16:10 44004 22

转载 (转)keil+stm32+JTAG利用swd方式进行printf输出

(转)keil+stm32+JTAG利用swd方式进行printf输出出处:http://www.douban.com/note/248637026/-----------------------------------------------------------------------------------------------作者:pri

2017-11-11 10:32:42 1301

转载 (转)keil+stm32+JTAG利用swd方式进行printf输出

出处:http://www.douban.com/note/248637026/-----------------------------------------------------------------------------------------------作者:prife感谢:[email protected]

2017-11-11 10:29:48 4404

转载 大端小端与MSB和LSB

大端(Big-endian):数据的高位字节存放在地址的低端 低位字节存放在地址高端;小端(Little-endian):数据的高位字节存放在地址的高端 低位字节存放在地址低端;举个简单而又容易理解的例子:uint_16 temp = 0x12345678;地址大端小端00x000010x120x780x000020x340x560x000030x560x340x000040x780x12 其中的

2017-11-09 11:43:28 14037 1

转载 STM32内存之一

今天仔细读了一下内存管理的代码,然后还有看了堆栈的相关知识,把以前不太明白的一些东西想通了,写下来,方便以后查看,也想大家看了能指出哪里不对,然后修改。    首先,先看一下stm32的存储器结构。​Flash,SRAM寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。可访问的存储器空间被分成8个主要块,每个块为512MB

2017-10-29 21:06:06 411

转载 嵌入式程序员应知道的几个基本问题

Static  6. 关键字static的作用是什么?  这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:  1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。  2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。  3) 在模块内,一个被声

2017-10-17 14:46:56 381

转载 数据对齐

转载自:http://www.cnblogs.com/bakari/archive/2012/08/27/2658956.html数据对齐实际上是内存字节的对齐,今天偶然翻开自己以前做的笔记,发现做了好多的题,但现在对于我来说觉得很陌生。上网查了一下数据对齐的原因和方式,现在把它整理出来以备之后的学习复习巩固。转载请注出处:http://www.cnblogs.com/bakari

2017-10-17 14:45:12 251

转载 startup_stm32f40xx.s: error: A3906U: Malformed via file '.\debug\startup_stm32f40xx._ia'.

startup_stm32f40xx.s: error: A3906U: Malformed via file '.\debug\startup_stm32f40xx._ia'.在其他电脑可以编译通过,我的电脑编译其他工程也能通过,就这个工程编译出现这个错误,不知是什么原因,有人遇到过吗?1.听说是文件夹名带有空格的缘故2.我也遇到了,最后把一个include路径删除了,就好了

2017-10-10 17:09:28 6769 1

转载 STM32F4之FPU性能的充分发挥-设置要点

浮点运算一直是定点CPU的难题,比如一个简单的1.1+1.1,定点CPU必须要按照IEEE-754标准的算法来完成运算,对于8位单片机来说已经完全是噩梦,对32为单片机来说也不会有多大改善。虽然将浮点数进行Q化处理能充分发挥32位单片机的运算性能,但是精度受到限制而不会太高。对于有FPU(浮点运算单元)的单片机或者CPU来说,浮点加法只是几条指令的事情。        现在又FPU或者硬件

2017-10-06 17:23:30 1339

CRC16校验工具集合

CRC16校验工具集合,包含了多种校验公式的校验工具,工具使用方便。

2018-10-29

FTDI芯片USB转串口驱动

FTDI芯片USB转串口驱动,包含linux系统、wince系统和Windows_10_8.1_8_7_Vista_XP等系统的驱动

2018-10-29

浮点数与hex互转

实现浮点数与hex数据互转,帮助程序编写及数据解析,实际应用中非常方便。

2018-10-29

空空如也

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

TA关注的人

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