初学STM32F411RE
将学习的过程、收获、经验传承下去,帮忙自己,帮助他人
wzfj12345
热爱技术.
展开
-
STM32F411RE-0020-认识某些汇编指令的意图
LDR R0,[R1,#0x08]---》读取存储器地址为R1+8的内容到R0中;LDR R0,[R1,#0x08]!---》读取存储器地址为R1+8的内容到R0中,然后R1=R1+8;LDR R0,[R1],#0x08---》读取存储器地址为R1的内容到R0中,然后R1=R1+8;STR和LDR类似;LDR R0,=0x2000000LDRIA R0,...原创 2019-11-06 12:22:03 · 1093 阅读 · 0 评论 -
STM32F411RE-0019-外部中断是如何进行配置的
SYSCFG_EXTICR1~4这四个寄存器可以选择外部中断的pin。有23个EXTI,分别是EXTI0~22;对于EXIT0~15对应到各个GPIO组的16个PIN;EXTI line 16 is connected to the PVD outputEXTI line 17 is connected to the RTC Alarm eventEXTI line ...原创 2019-11-01 14:06:24 · 635 阅读 · 0 评论 -
STM32F411RE-0018-对GPIO的控制原理
GPIO寄存器可以控制多组GPIO(A~H),每一组多达16个GPIO口。配置寄存器有GPIOx_MODER:配置输入、输出、复用、模拟;GPIOx_OTYPER:配置输出类型是开漏还是推挽;GPIOx_OSPEEDR:配置输出速度是低速、中速、快速、高速;GPIOx_PUPDR:配置上下拉是没有上下拉、上拉、下拉;GPIOx_IDR:读取输入;GPIOx_ODR:输出...原创 2019-11-01 12:16:09 · 670 阅读 · 0 评论 -
STM32F411RE-0017-深入了解异常处理
当异常中断来时,通常会先将R0~R3、R12、LR、PC、xPSR这8个寄存器压入栈中。取出异常向量表地址;更新NVIC寄存器、xPSR、LR、PC、SP;举例,我们在某个中断入口做一个断点。可以看到R0~R3、R12和下面绿色全出来的是对应起来的。从上面的LR为0xfffffff9可能很多人感觉很奇怪,下面会对此做个详细介绍。...原创 2019-10-30 20:41:40 · 455 阅读 · 0 评论 -
STM32F411RE-0016-需要对寄存器有一些了解
普通寄存器接触的比较多,比较好理解,不多做解释R0~R12R13称为栈指针寄存器,对应到两个物理寄存器MSP/PSP;R14称为LR寄存器,用来指示返回地址;R15称为PC寄存器;特殊寄存器xPSR称为程序状态寄存器,由APSR+EPSR+IPSR组成;PRIMASK寄存器只有一个bit位,置位会屏蔽除了NMI+HardFault以外的异常中断;FAULTMASK...原创 2019-10-30 17:45:36 · 832 阅读 · 0 评论 -
STM32F411RE-0015-关于clock的知识储备
这里有一张clock tree,非常详细,从这个图中就可以知道clock之间的继承关系。system clock可以通过RCC_CFGR寄存器的SW[0:1]来选择是用HSI、HSE、PLL的哪个source;AHB clock 可以通过RCC_CFGR寄存器的HPRE[0:3]设定分频(1 2 4 8 16 64 128 256 512),是从system clock分频出来的;...原创 2019-10-30 13:30:47 · 342 阅读 · 0 评论 -
STM32F411RE-0014-了解system tick interrupt
通过code可以了解是如何设置的1ms的系统滴答中断。例如假设AHB clock是16M=16000000,那么一个clock时间就是1/16000000,那么1ms是多少个clock呢,是16000个clock。如何进行编程呢,这里也是有相关的建议编程顺序。__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks){ if...原创 2019-10-30 11:14:38 · 322 阅读 · 0 评论 -
STM32F411RE-0013-对电平触发中断和边沿触发中断的理解
以高电平触发和上升沿触发的两种中断说明。当高电平时,产生中断,进入ISR,处理完之后,如果仍然还有高电平,会继续进入ISR。上升沿出发,为了能够让NVIC可以检测到这个中断,对该上升沿的时隙也是有要求的,例如至少保持1个cpu clock;...原创 2019-10-30 10:47:15 · 1763 阅读 · 0 评论 -
STM32F411RE-0012-中断控制优先级
AIRCR寄存器是SCB里重要的寄存器,而PRIGROUP又是AIRCR中的重点。因为他规定了后面中断优先级的分组性。可以从code中看到也是有对应上面表格中的PRIGROUP的5个level;#define NVIC_PRIORITYGROUP_0 0x00000007U /*!< 0 bits for pre-emption priority ...原创 2019-10-30 10:36:53 · 402 阅读 · 0 评论 -
STM32F411RE-0011-分析startup_stm32f411xe.s做了什么事情
设定栈指针Reset_Handler: ldr sp, =_estack /* set stack pointer */程序中有定义一些赋初值的变量,在编译的时候,会规定好这些变量在ram中的地址,以及这些变量的初值存在flash中的哪里。有这些信息,就是为了将ram中编译器为这些变量预订好的地址的地方,填充好他们各自的初值。/* Copy the da...原创 2019-10-29 21:44:38 · 1174 阅读 · 0 评论 -
STM32F411RE-0010-结合map文件分析连接脚本
下面是定义好对于STM32F411RE这个芯片的flash和ram的地址和大小设定。/* Specify the memory areas */MEMORY{FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512KRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K}下面可以看到有将....原创 2019-10-29 21:09:53 · 651 阅读 · 0 评论 -
STM32F411RE-0009-如何设置调试程序的入口停止点
在STM32CubeIDE,通过菜单Run-》Debug configuration这里默认是设置在main入口。如果要修改在汇编的Reset_Handler就可以将这里的main修改成Reset_Handler。下面是调试开始后停止的地方就是我们前面配置的地方。...原创 2019-10-29 20:33:44 · 449 阅读 · 0 评论 -
STM32F411RE-0008-认真理解编译过程,对后续开发极有益处
点击project->properties,会看到如下:最重要的就是这里的红色标注的部分,其中绿色标识的是重点。在这里有对汇编、C的编译选项配置,包含路径,宏定义,连接器的选项配置,以及postbuild的输出配置。Logging下面可以配置编译过程的log输出到哪里,这个还是比较有用的,当然在IDE上也有编译过程的log输出到console窗口。一旦遇到build erro...原创 2019-10-29 19:51:40 · 528 阅读 · 0 评论 -
STM32F411RE-0007-学习代码的第一个脚印
在已经安装了STM32CubeIDE环境之后,后面的操作基本都可以在这个IDE中进行了。可以此时连SDK都还没有拿到呢,别着急,这个IDE会帮你搞定。选择File-》New-》STM32 Project;此时会打开一个对话框,让你选择你的开发目标平台。为你的project起一个名字,点击next;下面就会选择要下载的SDK;这样就已经将这个工程建立完成了,后面可...原创 2019-10-29 17:55:15 · 462 阅读 · 0 评论 -
STM32F411RE-0006-IDE开发环境
软件开发环境采用STM32CubeIDE,主要是free,而且也好用。可以修改code,编译,在线debug等操作。ST-LINK的烧录擦写软件,可以烧录bin和hex,可以回读数据,读取寄存器数据等操作。有了上面两个工具,暂时可以进行一般性的开发了。第一个工具STEM32CubeIDE可以进行code 编辑、编译、调试、运行。一旦将程序调试稳定了,可以使用第二个工...原创 2019-10-25 17:59:35 · 625 阅读 · 0 评论 -
STM32F411RE-0005-了解有哪些硬件开发工具
这里的硬件开发工具,基本肯定是对应一个实实在在的硬件设备,功能主要是面向如何烧录,如何调试等功能.例如J-LINK、Segger。原创 2019-10-25 15:05:13 · 341 阅读 · 0 评论 -
STM32F411RE-0004-开发板用户使用说明手册
DM1724这份文档是介绍了开发板的用户使用说明。下面介绍了开发板的跳线帽设置、驱动安装、按键和灯的显示判断开发板是否正常。这张图介绍了一个概略图。通过下图可以知道元器件的位置下面是关于LED的状态指示灯,如果觉得需要可以关注这一部分。其实最重要的就是知道LED3亮红灯表示STM32F411上电是没有问题了,LED2要控制亮和灭需要控制GPIO高和低就可以了。...原创 2019-10-24 15:55:09 · 2928 阅读 · 0 评论 -
STM32F411RE-0003-从搜索我这款开发板开始
ST官网的这个搜索是有自动匹配功能的,可以完全匹配上我输入的这个开发板名字。点击搜索的结果,进来会看到,搜索内容所在的一个层级指示,于是就知道这个搜索结果是在哪里。这里也给出了一个购买该开发板的一个链接。这里给出了一个非常简短的描述:STM32 Nucleo-64开发板搭载的是STM32F411RE 的MCU,支持arduino和st的接口对外的扩展(啥意思呢,后面有个解释)...原创 2019-10-24 15:51:57 · 747 阅读 · 0 评论 -
STM32F411RE-0002-了解ST官网
完成一个ST 官网的注册是有必要的,因为ST的所有资料都是可以在官网上下载到,都是free。了解清楚这个官网的内容,对于后续的开发工作是很有帮助的。进来之后。Search:很好用的搜索框Product:是告诉你ST公司都有哪些chip可以提供,你可以在这里按照你需要的芯片来找。Application:是告诉你ST的chip可以应用到的产品领域,你可以在这里按照你想做的产...原创 2019-10-24 14:38:36 · 445 阅读 · 0 评论 -
STM32F411RE-0001-拿到了敲门砖
我手上有一块板子如下图。收集该板子的信息:板子名称:NUCLEO-F411RE有两颗chip:STM32F103CBT6和STM32F411RET6U为什么会有两颗STM32 的芯片呢,后面的文章会介绍。这里说明硬件开发环境已经有了。...原创 2019-10-24 14:18:29 · 551 阅读 · 0 评论