![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32/CM3
文章平均质量分 75
mmhh3000
这个作者很懒,什么都没留下…
展开
-
STM32从Flash地址0x08000000的启动重映射
在初写STM32程序时,遇到一个困惑,STM32的Flash在MDK里被设置为起始地址0x0800 0000,而CM3手册规定芯片复位时要从0x0000 0000地址开始取出中断向量 ,那STM32怎么样执行代码呢?地址重映射?或者在0x0000 0000里有对应有实际存储器?仔细阅读手册,发现这件事是因为STM32设计的Flash起始地址是在0x0800 0000位置开始的。全部代码都只能从原创 2014-03-17 10:59:12 · 11680 阅读 · 0 评论 -
MDK 查看局部变量显示<not in scope>
用MDK调试一块STM32F207的程序,想查看一下变量却发现watch窗口总是和,无奈只好凑合着通过printf函数进行串口打印查看。后来实在受不了,想了一下,觉得应该是编译器把这个局部变量给优化掉了,并没有在内存中生成,果断把优化级别改为Level 0,重新编译,解决。原创 2014-12-26 15:56:35 · 7860 阅读 · 0 评论 -
STM8/STM32硬件I2C读取APDS9930程序代码
STM的硬件I2C一直被各种吐槽,实际上只是用起来比较复杂而已,难点主要是在作为Master时的数据接收上,作为Slave时的数据发送没难度,正常用。重点是要真正掌握它里面设计的那个Data shift register和Data register,后者是前者的数据存储, 作为Master时的数据接收,I2C发送的ACK与STOP按接收长度不同要导致多种处理方式,稍不留神就会被绕晕。原创 2016-08-11 14:58:09 · 11702 阅读 · 3 评论 -
MDK (keil) 没有使用到的函数编译时候会有警告的解决
在使用MDK编写STM32代码时,有些函数如果没用到会报警告:函数定义如下:但是STM32有很多库函数,为什么没使用到的就不会报警告呢?这里有一个编译细节,就是函数的有效范围问题。库函数并没有使用static关键字,因为它可能会给其他文件使用,所以编译器会进行全编译,不做整个工程的调用检查,所以也不会报错,但是这样编译出来的HEX文件会大。而我写的函数明确指定了stat原创 2016-09-12 15:58:37 · 9198 阅读 · 1 评论 -
OSAL移植到STM8
最近需要用STM8S105做驱动控制器,涉及到使用485与上位机通讯,上位机的蓝牙模块中使用CC2541。这是个新产品,没有可借鉴的代码,涉及到的协议解算和逻辑结构又比较多,规划了一下架构并尝试写了几行代码,发现在编程幼稚园中学的状态机式编程实在难以胜任,于是打算上一个操作系统。考虑到ucos代码量比较大,不适用于这种小片子,一时难以抉择。忽然想到已经在BLE上耕耘了大半年了,使用...原创 2018-11-09 13:56:27 · 3423 阅读 · 3 评论 -
实现STM32F405的串口IAP
STM32串口IAP过程简介IAP包括两部分程序:BootLoader和Application(用户程序)。IAP的原理是STM32上电后默认从0x8000000地址开始执行,所以在0x8000000到0x08003FFF这一段放BootLoader程序,大小为16K。BootLoader程序是用下载器烧录进去的,本文档不做详细介绍。上电后BootLoader运行起来,会在一定时限内(...原创 2018-12-29 17:43:04 · 3897 阅读 · 0 评论