![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
stm32
爱学控制的猫
搞控制理论,C语言
展开
-
加速度计和陀螺仪指南(很详细的介绍)
转载自:http://www.geek-workshop.com/forum.php?mod=viewthread&tid=1695&reltid=676&pre_thread_id=0&pre_pos=1&ext=本帖翻译自IMU(加速度计和陀螺仪设备)在嵌入式应用中使用的指南。这篇文章主要介绍加速度计和陀螺仪的数学模型和基本算法,以及如何融合这两者,侧重算法、思想的讨论转载 2017-05-25 11:15:43 · 2945 阅读 · 0 评论 -
STM32寄存器编程思路 - 从51到stm32开发入门,真干货
本文转自 https://www.amobbs.com/thread-5462507-1-3.html 第23楼尊重原作不做任何修改=============以下正文===============本来只是路过,写详细一点。我看楼主浮躁得不得了。现在什么都不要做了,先去看几遍《不要做浮躁的嵌入式工程师》这篇文章,想清楚了,再动手吧。我做了个实例,不用ST的转载 2017-11-06 20:18:34 · 13491 阅读 · 3 评论 -
STM32GPIO口8种模式细致分析(类比51单片机)
关于STM32GPIO口的8种工作模式,我们先引出一些问题?STM32GPIO口如果既要输入又要输出怎么办?1、浮空输入模式 上图红色的表示便是浮空输入的过程,外部输入时0读出的就是0,外部输入时1读出的就是1,外部没有输入IO处于阻塞读不出电平状态。用处:感觉在信号处理方面用的比较好,比如在读取一段一段的波形,可以清晰的知道什么时候是0信号,什么转载 2017-11-06 20:22:55 · 2662 阅读 · 1 评论 -
关于ASSERT(断言)的作用
程序一般分为Debug 版本和Release 版本,Debug 版本用于内部调试,Release 版本发行给用户使用。断言assert 是仅在Debug 版本起作用的宏,它用于检查“不应该”发生的情况。在运行过程中,如果assert 的参数为假,那么程序就会中止(一般地还会出现提示对话,说明在什么地方引发了assert)。 在STM32的固件库和提供的例程中,到处都可以见到assert_转载 2017-10-12 14:05:02 · 821 阅读 · 0 评论 -
CPU的RISC和CISC架构的区别
有关RISC和CISC的区别方面, 之前就有一些零零碎碎的理解, 这里再次做一次总结, 以求深入. CISC架构的代表: x86, C51RISC架构的代码:arm, mips,powerpc, avr, pic 指令集的区别首先从字面上理解就能知道, CISC(Complex Instruction SetComputer)架构的指令数肯定是远远多转载 2017-10-30 10:53:17 · 516 阅读 · 0 评论 -
寄存器、存储器与外设的内存映射原理
这篇日志讲得主要是寄存器和存储器(这里指的是RAM)的区别,之后才是重点,说说我对外设的片内RAM地址映射的理解。如果你学过模电并且基本是醒着上课的话那你可以潇洒得路过了,对于那些本科期间不甚逃课的人本人表示钦佩。 由于大学期间极其讨厌硬件,所以我们系跟硬件最相关的两门课组成原理和数字逻辑我都是睡过去的……在此先对组织表示下忏悔,顺便哀悼一下那逝去的青春……好吧,开始正题。转载 2017-11-08 17:24:46 · 4118 阅读 · 1 评论 -
STM32 KEIL下的堆栈设置
刚接手STM32时,你只编写一个 int main(){while(1);}BUILD://Program Size: Code=340 RO-data=252 RW-data=0 ZI-data=1632 编译后,就会发现这么个程序已用了1600多的RAM,要是在51单片机上,会心疼死了,这1600多的RAM跑哪儿去了,分析map,你会发现是堆和栈占用的在s转载 2017-10-24 09:34:16 · 2632 阅读 · 0 评论 -
Keil MDK下如何设置非零初始化变量
本文转载自http://blog.csdn.net/zhzht19861011/article/details/8780837一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备。而keil mdk在默认情况下,任何形式的复位都会将RAM区的非初始化变量数据清零。如何设置非初始化数据变量不被零初始化,这是本篇转载 2017-11-11 11:16:20 · 673 阅读 · 0 评论 -
STM32中AHB总线、APB2总线、APB1总线这些是什么?
一直不明白有STM32中AHB总线、APB2总线、APB1总线这些是是什么??所谓地址映射,就是将芯片上的存储器 甚至I/O等资源与地址建立一一对应的关系。如果某地址对应着某寄存器,我们就可以运用C语言的指针来寻址并修改这个地址上的内容,从而实现修改该寄存器的内容。正是因为头文件中有了对于各种寄存器和I/O端口的地址映射,我们才可以在51单片机程序中方便地使用P2^转载 2017-11-13 10:02:40 · 14035 阅读 · 0 评论 -
寄存器名称和地址的映射分析
首先要清楚的一点,所有操作,最终目的都是操作寄存器一,对比51单片机和STM32对寄存器的操作1)51单片机: sfr P0=0x80; //关键字sfr 声明地址和名称的映射 P0=0x00; //将0x00赋值给P0口的8位(51单片机一组IO为8位)122)STM32: GPIOA->ODR=0x00000转载 2017-11-13 10:13:38 · 2583 阅读 · 0 评论 -
使用HAL库、STM32CubeMX和Keil 5开发入门教程(二):GPIO
本文转载自http://blog.csdn.net/charmingsun/article/details/52095563 有关软件的使用以及其它准备工作请参考:使用HAL库、STM32CubeMX和Keil 5开发入门教程(一):点亮一盏LED灯(NUCLEO-F411RE)一、API说明HAL库一共包含如下6个IO操作函数: 1、读取某个引脚的电平状态: HAL_转载 2017-11-03 09:58:36 · 1275 阅读 · 0 评论 -
使用HAL库、STM32CubeMX和Keil 5开发入门教程(一):点亮一盏LED灯(NUCLEO-F411RE)
本文转载自http://blog.csdn.net/charmingsun/article/details/50802267,本教程以点亮一盏LED灯为目的为大家演示用STM32CubeMX、Keil、ST-Link开发STM32程序的一般方法。一、学习前的准备工作硬件:一块STM32开发板,一个ST-Link;(我使用的开发板是NUCLEO-F411RE) 软件:装好ST-L转载 2017-11-03 10:01:39 · 2115 阅读 · 0 评论 -
深入理解STM32之储存器和总线架构1(基于STM32F411)
本文转载自http://blog.csdn.net/charmingsun/article/details/52258419官方文档: STM32F411 参考手册 STM32F411 数据手册 Cortex™-M4F 编程手册 STM32 微控制器系统存储器自举模式应用笔记 STM32™ 自举程序中使用的 USART 协议 ARM Cortex™-M Prog转载 2017-11-03 10:04:44 · 1469 阅读 · 0 评论 -
深入理解STM32之储存器和总线架构2(基于STM32F411)
本文转载自http://blog.csdn.net/charmingsun/article/details/52295018官方文档: STM32F411 参考手册 STM32F411 数据手册 Cortex™-M4F 编程手册 STM32 微控制器系统存储器自举模式应用笔记 STM32™ 自举程序中使用的 USART 协议 ARM Cortex™-M Progra转载 2017-11-03 10:06:52 · 1449 阅读 · 0 评论 -
STM32外部中断
STM32 的每个 IO 都可以作为外部中断的中断输入口,这点也是 STM32 的强大之处。GPIO 的管脚 GPIOx.0~GPIOx.15(x=A,B,C,D,E,F,G)分别对应中断线 0~15。这样每个中断线对应了最多 7 个 IO 口,以线 0 为例:它对应了 GPIOA.0、GPIOB.0、GPIOC.0、GPIOD.0、 GPIOE.0、GPIOF.0、GPIOG.0。而中断线每转载 2017-11-18 15:58:16 · 943 阅读 · 0 评论 -
STM32之中断与事件---中断与事件的区别
这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套.图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要转载 2017-11-18 20:41:00 · 476 阅读 · 0 评论 -
内存分配——静态存储区 栈 堆
一、内存基本构成 可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。 栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的转载 2017-11-16 08:29:45 · 396 阅读 · 0 评论 -
Keil MDK下如何设置非零初始化变量
一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备。而keil mdk在默认情况下,任何形式的复位都会将RAM区的非初始化变量数据清零。如何设置非初始化数据变量不被零初始化,这是本篇文章所要探讨的。转载 2017-10-02 13:22:29 · 399 阅读 · 0 评论 -
STM32启动文件解析
stm32的启动文件分析。转载 2017-09-03 16:15:08 · 551 阅读 · 0 评论 -
堆栈的理解
转载一篇关于堆栈的英文文章和中文文章。转载 2017-09-18 21:15:12 · 828 阅读 · 0 评论 -
STM32启动文件详解——startup_stm32f10x_xx.s
本文分析了stm32启动文件的作用。转载 2017-08-07 21:43:41 · 9426 阅读 · 0 评论 -
STM32——时钟系统
本文详细展示了stm32处理器的时钟系统。转载 2017-08-10 19:52:36 · 381 阅读 · 0 评论 -
Cortex M3寄存器组
本文分析了ARM Cortex3内核的寄存器组功能。转载 2017-08-10 19:56:28 · 1609 阅读 · 0 评论 -
Cortex-M3工作模式与异常
Cortex-M3工作模式与异常一、工作模式 线程模式和手柄模式。当处理器处在线程状态下时,既可以使用特权级,也可以使用用户级;另一方面, handler模式总是特权级的。在复位后,处理器进入线程模式+特权级。 二、异常和中断Cortex-M3 支持大量异常,包括 16-4-1=11个系统异常,和最转载 2017-08-10 20:03:19 · 1910 阅读 · 0 评论 -
Cortex M3 NVIC与中断控制
Cortex M3 NVIC与中断控制宗旨:技术的学习是有限的,分享的精神是无限的。一、NVIC概览 ——嵌套中断向量表控制器 NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外, NVIC 还包含了 MPU、 SysTick 定时器以及调试控制相关的寄存器。NVIC 共支持 1 至 240 个外部中断转载 2017-08-10 20:06:46 · 1094 阅读 · 0 评论 -
Cortex M3存储器映射
CortexM3存储器系统宗旨:技术的学习是有限的,分享的精神是无限的。 CM3 只有一个单一固定的存储器映射。这一点极大地方便了软件在各种 CM3 单片机间的移植。 存储空间的一些位置用于调试组件等私有外设,这个地址段被称为“私有外设区”。私有外设区的组件包括:闪存地址重载及断点单元(FPB),数据观察点单元(DWT转载 2017-08-10 20:14:16 · 1429 阅读 · 0 评论 -
STM32单片机知识汇总
1、 AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备2、 Stm32f10x.h相当于reg52.h(里面有基本的位操作定义),另一个为stm32f10x_conf.h专门控制外围器件的配置,也就是开关头文件的作用3、 HSE Osc(High Speed External Oscillator)高速外部晶振,一般为8M转载 2017-08-10 21:26:45 · 5323 阅读 · 3 评论 -
为什么STM32从Flash地址0x08000000的启动重映射
为什么STM32从Flash地址0x08000000的启动重映射?转载 2017-09-13 22:44:53 · 4401 阅读 · 0 评论 -
编译后程序运行时在内存中的堆栈分布
编译后程序运行时在内存中的堆栈分布,局部变量、全局变量、堆、堆栈、静态和全局转载 2017-09-15 08:15:43 · 3219 阅读 · 0 评论 -
大端模式小端模式
大端模式小端模式转载 2017-09-08 14:38:12 · 285 阅读 · 0 评论 -
系统学习ARM之一 --ARM简介
ARM处理器的 3 种状态, ARM 有8个基本工作模式,7种异常源,寄存器,异常处理的过程,字节序转载 2017-09-08 15:11:45 · 393 阅读 · 0 评论 -
系统学习ARM之二 --ARM指令集
ARM的指令系统转载 2017-09-08 15:13:52 · 387 阅读 · 0 评论 -
系统学习ARM之三 --load/store指令--装载和存储指令
load/store指令--装载和存储指令转载 2017-09-08 15:15:38 · 10583 阅读 · 0 评论 -
系统学习ARM之四 --GNU的伪指令集
转载自http://blog.csdn.net/qqliyunpeng/article/details/48791487一、伪指令 的含义: 伪指令是编译器支持的指令,不是硬件芯片支持的指令。 编译器在编译时,会把伪指令转化对应的芯片支持的指令。 伪指令集包括:伪操作和伪指令二、伪操作:1. 数据定义(Data Defini转载 2017-09-08 15:17:25 · 381 阅读 · 0 评论 -
系统学习ARM之五 --C语言和汇编混合编写
转载自http://blog.csdn.net/qqliyunpeng/article/details/48791647一、GNU汇编书写格式:代码行中的注释符号: ‘@’ 整行注释符号: ‘#’ 语句分离符号: ‘;’ 直接操作数前缀: ‘#’ 或 ‘$’全局标号:标号只能由a~z,A~Z,0~9,“.”,_等(由点、字母、数字、下划线等组成,除局部标号外,不能以数字转载 2017-09-08 15:19:19 · 338 阅读 · 0 评论 -
系统学习ARM之六 --异常处理
转载自 http://blog.csdn.net/qqliyunpeng/article/details/48791715一、简介:异常: 是一种突发情况。异常发生后,处理器要进行相应的处理(异常处理),切换到对应的异常工作模式。二、四大步三小步:(异常处理的硬件完成的事项) (1)拷贝 CPSR 到 SPSR_ (2)设置适当的 CPSR转载 2017-09-08 15:20:29 · 305 阅读 · 0 评论 -
架构与内核
ARM内核和架构的关系转载 2017-09-18 14:44:13 · 2591 阅读 · 0 评论 -
STM32的复用时钟的开启和重映射功能
IO口的复用最近在学习STM32,在BZ上一篇关于的串口通信文章里有这么一段代码: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE); 当初是参考开发的例子写的,一直对GPIOD或上“RCC_APB2Periph_AFIO”这句话的意思没搞懂,通过这几天在网上查转载 2017-11-22 21:15:01 · 2183 阅读 · 0 评论