![](https://img-blog.csdnimg.cn/20210124233409139.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
STM32初学
文章平均质量分 70
本栏目主要介绍STM32的一些基础入门知识,在其他平台上也比较通用
吾爱技术圈
这个作者很懒,什么都没留下…
展开
-
J-Link RTT 移植和运行机制详解
*RTT全称是Real Time Transmit(实时传输)**是Segger公司推出的调试手段之一。它是一种用于嵌入式中与用户进行交互的技术。使用RTT可以从MCU快速输出调试信息和数据,且不影响MCU的实时性。只要支持J-Link的MCU就可使用RTT功能,兼容性非常强。RTT支持两个方向的多个通道,上到主机,下到目标,它可以用于不同的目的,为用户提供尽可能多的自由。默认实现每个方向使用一个通道,用户可在在调试终端输入和输出。原创 2024-01-08 18:28:36 · 1896 阅读 · 0 评论 -
hex文件合并
打开我们的hex文件,就以BOOT和APP代码为例,用记事本或者其他的软件(notepad++等)打开hex文件最后一行是代表文件的结束,那么我们只需要删除boot文件的最后一行代码,然后把APP的代码的全部内容直接拷贝过来,接到boot文件的最后一行。原创 2022-10-26 17:17:55 · 5155 阅读 · 2 评论 -
hex文件格式详解
hex文件格式详细解读,以及对比了bin文件有何区别,hex文件的存在价值。原创 2022-10-23 17:12:06 · 41361 阅读 · 7 评论 -
STM32 map文件解析
什么是map文件?简单的说:map文件是通过编译器编译之后,集程序、数据及IO空间的一种映射文件。Keil生成map文件的设置如下图所示:生成文件保存路径与Listings选择路径相同。keil 主要包含配置:Memory Map:内存映射Callgraph:图像映射Symbols:符号Cross Reference:交叉引用Size Info:大小信息Totals Info:统计信息Unused Section Info:未调用模块信息Veneers Info:装饰信息【如何查原创 2021-07-14 18:18:54 · 5692 阅读 · 5 评论 -
GPIO推挽输出和开漏输出模式区别详解
以STM32参考手册中的GPIO输出配置图为例:看到输出驱动器虚线框中的内容,输出驱动器中的P-MOS和N-MOS两个MOS管就是实现推挽输出和开漏输出的关键。推挽输出模式下,P-MOS和N-MOS都正常工作,开漏输出模式下,只有下面的N-MOS工作,上面的P-MOS不工作。注意:输出模式没有上拉下拉配置。推挽输出(Push-Pull Output)推挽输出的结构是由两个三极管或者MOS管受到互补信号的控制,两个管子始终保持一个处于截止,另一个处于导通的状态。电路工作时,两只对称的开关管每次只有一原创 2021-03-29 20:33:06 · 38209 阅读 · 10 评论 -
KILE退出调试模式时显示Encuntered an improper argument
KEIL版本:V5.25Windows:Win10KILE退出调试模式时显示Encuntered an improper argument,如下图所示:在退出调试前把所有断点清除后再退出,可解此问题。原创 2021-03-25 11:35:02 · 310 阅读 · 0 评论 -
关于STM32的SPI外设时钟分频对应的SCK速率
以STM32F103为例,经过system_stm32f10x.c文件中的SystemInit()函数之后,这里是指的默认时钟配置如下图所示:STM32F103的系统框架图如下所示:可见:SPI1是在APB2上的,SPI2是在APB1上的。SPI的波特率控制有8种分频可选SPI控制寄存器 1(SPI_CR1)上述的fPCLK对于SPI1来说是fPCLK2,对于SPI2来说是fPCLK1。系统默认配置是fPCLK2=72MHz,fPCLK1=36MHz。标准库中SPI_BaudRatePr原创 2021-03-12 14:11:52 · 14218 阅读 · 2 评论 -
STM32休眠模式下GPIO的状态是否能保持休眠前的状态
下图摘自STM32F103 datasheetStop模式下,MCU的GPIO是可以保持休眠之前的状态的,且所有的寄存器在休眠状态下保持休眠前的状态不变,比如说休眠后需要某个LED控制亮着灯是可以实现的(已实验测试验证)。1、sleep模式(Cortex-M3内核停止,外设运行)这个时候,如果不锁定IO的话,有外部触发的IO电平会改变。2、stop模式(所有时钟停止)这个时候,外设已经停止工作,保持原来的电平,锁不锁都一样。3、stanby模式(1.8V电源关闭)在此情况下,IO都是高阻,原创 2021-02-03 18:29:14 · 4053 阅读 · 0 评论 -
STM32的时钟配置——时钟树解析
STM32为什么要有复杂的时钟系统首先STM32 本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及 RTC 只需要几十 k 的时钟源即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。原创 2020-12-25 16:32:52 · 2436 阅读 · 1 评论 -
STM32不同型号的芯片对应的启动文件如何选择
startup_stm32f10x_ld_vl.s: for STM32 Low density Value line devicesstartup_stm32f10x_ld.s: for STM32 Low density devicesstartup_stm32f10x_md_vl.s: for STM32 Medium density Value line devicesstartup_stm32f10x_md.s: for STM32 Medium density device..原创 2020-12-24 18:37:18 · 3321 阅读 · 1 评论 -
STM32F1如何切换到不同的型号
这里我以STM32F103VET6切换到STM32F103RBT6举例:(这里我暂时只写使用标准库时,以及IDE使用KEIL MDK的方法)首先在Options->Device设备选择界面切换到对应的芯片STM32F103RBT6是128K Flash,属于中等密度产品,STM32F103VET6是512K Flash,属于高密度产品,Options->C/C++界面Define栏中STM32F10X_HD改为STM32F10X_MD,HSE_VALUE根据实际使用的晶振进行调整设置原创 2020-12-24 17:49:54 · 761 阅读 · 1 评论 -
STM32启动文件代码解析
目录启动流程代码详解启动文件使用的 ARM 汇编指令汇总关于与启动文件有关的一些问题思考下面是F1固件库V3.5.0的启动文件startup_stm32f10x_hd.s,以此为例做解析,其余的型号的启动文件都差不多,细微区别在于由于片上外设不同,支持的中断也不一样,所以在启动文件的中断向量表不同型号会有差别。启动流程启动文件由汇编编写,是系统上电复位后第一个执行的程序。主要做了以下工作:1、初始化堆栈指针 SP=_initial_sp2、初始化 PC指针=Reset_Handler3、初始化中原创 2020-12-23 17:37:15 · 663 阅读 · 0 评论 -
解读STM32标准库的程序架构 - 以GPIO操作为例
前言在编程的道路上,多少都会想我一样碰到过很多难以解决的技术问题,在最苦恼最无助的时候,如果在网上突然发现有人遇到了同样的问题并给出了详细的解决办法,在看完之后茅塞顿开,从而解决了困扰了一整天甚至好几天的问题,这时的我是感激的。不仅感激互联网让我们生活变得如此美好,把世界上的人似乎都聚集到了一起,大家可以畅所欲言;更感激愿意付出自己宝贵的时间写下各种技术分享,以便其他同仁遇到问题能愉快地解决问题...原创 2019-07-10 16:05:57 · 1121 阅读 · 0 评论