
stm32
文章平均质量分 57
slj_win
这个作者很懒,什么都没留下…
展开
-
【IAR】Error[Li005] no definition for "__program_start"
在用IAR的高版本编译器对较低版本下建立的进行工程编译的时候会出现以下错误:Error[Li005] no definition for "__program_start"这是你需要对stm32f10x_vector.c做一些修改,如下所示:将原先程序中的void __program_start( void ); #pragma location = "INTVE转载 2012-07-28 16:44:26 · 12470 阅读 · 0 评论 -
STM32的SPI时钟
1)fPCLK不是CPU频率,而是外设总线的频率。2)STM32的SPI时钟最快是18MHz,这是芯片设计时决定的。3)STM32的SPI1在APB2上,SPI2和SPI3在APB1上,APB1的最高频率是36MHz,APB2的最高频率是72MHz;因此,为了不超过最高18MHz的设计要求,配置SPI2和SPI3时可以使用fPCLK/2的选项,而配置SPI1时则不能使用fPCLK/转载 2013-12-26 10:12:16 · 3990 阅读 · 0 评论 -
STM32的串口采用DMA方式接收数据测试
STM32的串口采用DMA方式接收数据测试本文博客链接:http://blog.youkuaiyun.com/jdh99,作者:jdh,转载请注明.参考链接:http://www.amobbs.com/forum.php?mod=viewthread&tid=5511863&highlight=dma%E6%8E%A5%E6%94%B6转载 2014-01-11 21:20:16 · 3373 阅读 · 0 评论 -
STM32的串口采用DMA方式发送数据测试
文博客链接:http://blog.youkuaiyun.com/jdh99,作者:jdh,转载请注明.环境:主机:WIN7开发环境:MDK4.23MCU:STM32F103CBT6源代码:配置:[cpp] view plaincopy//--------------转载 2014-01-11 22:55:49 · 3304 阅读 · 0 评论 -
PIO模式
PIO的英文拼写是“Programming Input/Output Model”,PIO模式是一种通过CPU执行I/O端口指令来进行数据的读写的数据交换模式。是最早先的硬盘数据传输模式,数据传输速率低下,CPU占有率也很高,大量传输数据时会因为占用过多的CPU资源而导致系统停顿,无法进行其它的操作。PIO数据传输模式又分为PIO mode 0、PIO mode 1、PIO mode 2、PI转载 2014-01-20 16:53:12 · 1737 阅读 · 0 评论 -
IAR STM32 函数和变量的绝对地址定位
昨天我突然冒出个想法,能否利用函数和变量的绝对定位,实现程序的模块化更新。 也就是说,如果我要改变某个函数,只需要更新flash里面一个局部,也许只需要更新几百个字节,而无须重新下载整个上百K的程序。 经过查找资料和反复实验,终于实现了,现总结如下: 1) 把函数定位在FLASH高端的指定位置,以后更新,只更新那小块地方就可以了。 方法一: I转载 2014-03-19 10:35:16 · 18629 阅读 · 3 评论 -
如何让静态局部和全局变量或数组存在指定地址的Flash
近来很多人都在关心数据存放的问题,如果在熟悉编译环境的情况下,要想在Flash(ROM)里面存放变量或数组值是很容易的。但是产品开发者重在应用程序的开发和产品的研发,编译器是一个工具,要是在这个上面花很多时间的话,市场有可能已经被别人抢占了。所以我不建议他们去深入编译环境,只要能用就行。所以我在这里给大家推荐一种方法:可以让变量或数组存放在Flash区,而且存放的起始地址和存放的空间大小是可控的,转载 2014-03-19 11:34:49 · 6093 阅读 · 1 评论 -
STM32之中断与事件---中断与事件的区别
这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套.图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要转载 2014-04-16 11:02:39 · 1274 阅读 · 0 评论 -
STM32之CAN ---CAN ID过滤器分析
1 前言 在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关的。因此,发送者以广播的形式把报文发送给所有的接收者。节点在接收报文时,根据标识符(CAN ID)的值决定软件是否需要该报文;如果需要,就拷贝到SRAM里;如果不需要,报文就被丢弃且无需软件的干预。 为满足这一需求,bxCAN为应用程序提供了14个位宽可变的、可配置的过滤器组(1转载 2014-04-16 13:54:26 · 1548 阅读 · 0 评论 -
DRAM、SDRAM和SRAM的区别
DRAM,动态随机存取存储器,需要不断的刷新,才能保存数据。 而且是行列地址复用的,许多都有页模式。 SRAM,静态的随机存取存储器,加电情况下,不需要刷新,数据不会丢失,而且,一般不是行列地址复用的。 SDRAM,同步的DRAM,即数据的读写需要时钟来同步。 DRAM和SDRAM由于实现工艺问题,容量较SRAM大。但是读写速度不如SRAM,但是现在,SDRAM的速度也已经很快了,转载 2014-09-05 22:19:26 · 2422 阅读 · 1 评论 -
使用J-Link ARM烧录FLASH
//=====================================================================//TITLE:// 使用J-Link ARM烧录FLASH//AUTHOR:// norains//DATE:// February 21-September-2010//Environment://转载 2014-11-07 19:58:15 · 988 阅读 · 0 评论 -
keil(MDK)中出现error: #513: a value of type "int" cannot be assigned to an entity of type "char *",即函数返
对于Value=Fun()调用,出错究其原因一般有以下几点: 1、函数返回值是int型,Value是char * 2、函数返回值是char*,Value是char *,但是调用Fun函数的文件没有包含Fun函数的声明。(keil才会出现)。 3、其它未知转载 2014-10-11 12:45:31 · 64408 阅读 · 0 评论 -
选择ARM7还是cortex-M3?
要使用低成本的 32位处理器,开发人员面临两种选择,基于Cortex-M3内核或者ARM7TDMI内核的处理器。如何做出选择?选择标准又是什么?本文主要介绍了ARM Cortex-M3内核微控制器区别于ARM7的一些特点,帮助您快速选择。1.ARM实现方法 ARM Cortex-M3是一种基于ARM7v架构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(冯诺伊曼转载 2014-01-08 13:55:10 · 907 阅读 · 0 评论 -
STM32的两个.bin文件如何合并?
在生产时就是两道工序先写入IAP,再通过IAP写入用户程序。在生产时就是两道工序,且生产时可能不会通过IAR+JLINK向芯片写IAP,应该是通过专门的烧录器+适配器向芯片烧写程序。如果能合并为1个,一次性烧写最好了,节省一道工序。你找个STM32,用J-Link写入IAP,用IAR写入用户程序。然后用J-Flash将STM32的Flash内容全部读出来,保存为Bin文件就可以转载 2013-12-23 17:12:17 · 5891 阅读 · 0 评论 -
IAP ISP 区别
IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。 通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信管道(如U转载 2013-05-23 09:42:15 · 856 阅读 · 0 评论 -
STM32 注意的地方
注:AHB主要负责外部存储器时钟。PB2负责AD,I/O,高级TIM,串口1。APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM。使用MDK KeiluVision4进行学习,照着前面几个历程进行学习,看懂几个历程后想自己也照着搞搞,开始有些错误经调试后都解决了,但是在其他问题都解决后,编译就出现了More More than one section matches转载 2013-06-10 09:03:30 · 4978 阅读 · 0 评论 -
RCC_APB2Periph_AFIO--复用IO时钟的使用
为了优化64脚或100 脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。设置复用重映射和调试I/O 配置寄存器(AFIO_MAPR) 实现引脚的重新映射。这时,复用功能不再映射到它们的原始分配上。 需要用到外设的重映射功能时才需要使能AFIO的时钟外部中断(EXTI)中与AFIO有关的寄存器是AFIO-EXTICR1、2、3,它们是用来选择EXTIx外部中转载 2013-12-14 09:16:09 · 22262 阅读 · 1 评论 -
stm32的spi
stm32的spi是全双工的,在主机发送数据的时候才会产生spi的时钟,所以接收数据时也要写空数据到spi总线上,才能产生读数据的时序。转载 2013-12-16 15:55:35 · 1210 阅读 · 0 评论 -
STM32 中断向量表的位置 、重定向
【lanmanck原创】这篇文章已经说了STM32的启动过程:http://blog.youkuaiyun.com/lanmanck/article/details/8252560我们也知道怎么跳到main函数了,那么,中断发生后,又是怎么跑到中断入口地址的呢?从stm32f10x.s可以看到,已经定义好了一大堆的中断响应函数,这就是中断向量表,标号__Vectors,表示转载 2014-01-01 15:49:09 · 2251 阅读 · 0 评论 -
STM32 启动解析,启动代码,__main main
启动代码看这里:http://blog.youkuaiyun.com/chehlcy/article/details/5164472在启动文件我们看到了__main和用户写的main,这2个是有区别的,大概流程如下:1、复位第一条指令:Reset_Handler PROC,这里指定为 LDR R0, =__main。表示调用库函数__main,当然,我们可以转载 2014-01-01 15:49:45 · 1472 阅读 · 0 评论 -
STM32 keil mdk启动代码发分析
学习STM32,看了一堆乱七八糟的文档,准备写程序了,先分析了下STM32的启动代码,看着这堆鬼鬼的汇编代码,挺吓人的,看看帮助,查查网路,还是不那么难懂。[c-sharp] view plaincopy;// Stack Configuration ;// Stack Size (in Bytes) ;// S转载 2014-01-01 15:51:15 · 1293 阅读 · 0 评论 -
stm32 库文件_line 函数
定义 内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是否能形成内联函数,需要看编译器对该函数定义的具体处理。 动机 内联扩展是用来消除函数调用时的时间开销。它通常用于频繁执行的函数。 一个小内存空间的函数非常受益。 如果没有内联函数,编译器可以决定哪些函数转载 2014-01-01 22:21:08 · 972 阅读 · 0 评论 -
深入理解SP、LR和PC
深入理解ARM的这三个寄存器,对编程以及操作系统的移植都有很大的裨益。1、堆栈指针r13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式、非异常模式(用户模式和系统模式),都有各自独立的堆栈,用不同的堆栈指针来索引。这样当ARM进入异常模式的时候,程序就可以把一般通用寄存器压入堆栈,返回时再出栈,保证了各种模式下程序的状态的完整性。2、连转载 2014-01-02 10:56:58 · 908 阅读 · 0 评论 -
stm32应用部分发生中断,PC跳转到IAP中断向量表处后,如何跳转到应用部分中断函数入口的
一直不太明白stm32IAP启动后跳到应用部分运行后,应用部分发生中断后PC指针要跳转到IAP部分的中断向量表处(地址0x80000000由硬件决定),但是如何跳到应用部分的执行函数处的呢?要理解此处最关键的地方为函数"NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset);",Offset为应用部分的中断向量表偏移地址。中断响应是先原创 2014-01-02 15:36:58 · 4774 阅读 · 0 评论 -
合并BIN文件的两种方法
在单片机的开发过程中,经常需要将两个单独的BIN文件合并成一个文件,方便烧写和生产。下面结合STM32的IAP Bootloader Code和Application Code的合并,介绍两种合并BIN文件的方法。 首先简单介绍一下STM32的IAP。IAP(In-application-programming),即在应用中编程。有了它,产品发布之后,仍然可以方便的升级固件,而不需要转载 2013-12-23 17:14:14 · 2042 阅读 · 0 评论 -
IAR环境下STM32+IAP方案的实现
--基于STM32F103ZET6的UART通讯实现 一、什么是IAP,为什么要IAP IAP即为In Application Programming(在应用中编程),一般情况下,以STM32F10x系列芯片为主控制器的设备在出厂时就已经使用J-Link仿真器将应用代码烧录了,如果在设备使用过程中需要进行应用代码的更换、升级等操作的话,则可能需要将设备返回原厂并拆解出来再使用转载 2015-12-23 11:25:53 · 4050 阅读 · 0 评论