stm32
文章平均质量分 93
wuyuzun
知识无边,总结是岸!!!
展开
-
用的Jlink但是却提示找不到Ulink的解决办法
1.首先这里要选Jlink2. 这里需要选择Jlink驱动另外一个解决办法:正确操作上面的第1步,然后勾选下面选项原创 2020-05-16 12:57:12 · 1626 阅读 · 0 评论 -
STM32 对外设基地址,总线外设基地址和寄存器基地址的理解
前言本博文基于STM32F103ZET6和MDK以及V3.5.0库函数;本博文从Cortex-M3内核的寻址空间映射一直聊到库函数是怎样配置具体的某一个寄存器;如有不足之处,多多指教;Cortex-M3存储器映射由于STM32系列芯片为32位处理器,所谓32位处理器,也即是地址总线有32根,可寻址空间为2^32=4GB;如下图从图片上可以看出,ARM公司已经为芯片生产厂商们划分好...原创 2019-01-26 15:43:13 · 9288 阅读 · 10 评论 -
STM32 BOOT0和BOOT1对于下载程序的应用
前言本博文基于STM32F103ZET6和MDK5编写;如有不足之处,还请多多指教;STM32开发板下载程序的两种方式一: 仿真器下载(J-Link,ULink等等)步骤:(1)(2)...原创 2019-01-24 22:39:20 · 5895 阅读 · 2 评论 -
STM32 在PC端串口助手上打印中文字符----printf()函数重定向
前言本博文基于STM32F103ZET6和MDK5.2.6和库函数V3.5.0开发;本博文采用七星虫德飞莱开发板,USB-TTL电路,USART1和野火串口调试助手;如有不足,多指教;串口通信作为拓展单片机功能的一个外设,其本身还有一个常用的功能就是用于调试使用,通过对一个值的输出从而观察所要的值是否正确,比较形象,但是自己在写串口的时候写出来的程序不能像当初VC++里的C语言一样利用...原创 2019-01-31 12:30:33 · 8940 阅读 · 5 评论 -
STM32 HardFault_Handler 硬件错误 解决办法
在用Keil对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中。这说明STM32出现了硬件错误。STM32出现硬件错误可能有以下原因:(1)数组越界操作;(2)内存溢出,访问越界;(3)堆栈溢出,程序跑飞;(4)中断处理错误;遇到这种情况,可以通过以下2种方式来定位到出错代码段。方法1:1.1在硬件中断...转载 2019-05-14 18:40:15 · 453 阅读 · 0 评论 -
SD卡存储容量的计算过程(附带修正STM32官方库里SD卡例程的一个BUG)
前言SD卡底层驱动代码量不小,功能稍微有点复杂,其他的功能不说了;本博文只介绍SD卡V1.0和V2.0版本的SD卡的容量结算;在对SD卡进行FATFS文件系统(最新R0.13c版本)移植时,接口函数DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void *buff )会获取SD卡的三个重要信息作为f_fdisk和f_mkfs函数为整个SD卡分区和挂载文件系...原创 2019-05-27 21:16:02 · 8054 阅读 · 3 评论 -
解决MDK(Keil)Download图标灰色不能下载的问题
前言本博文不一定能解决所有Download灰色的问题,因为我还不清楚还有什么原因能引起此类问题,但是至少我这个问题够了;如果以后遇到其他引起Download灰色的问题,我在补充;问题引起的原因:我的一个工程,代码量太大了,导致有些文件没法编译了,我想优化代码,结果就引起了灰色;解决问题的办法因为并没有产生.HEX 文件,所有并没有下载的意义,我理解的是这样;在这里我确定之前我并没...原创 2019-05-31 19:23:29 · 19565 阅读 · 0 评论 -
解决STM32 SD卡官方库移植时 获取不到SD Status寄存器值的问题
前言SD卡底层驱动移植的时候,不建议照搬代码而不去了解底层的工作原理,个人认为这样对以后工作极为不利,出了问题不知道从哪儿解决;干这个的,需要深入恶土;如有不足之处,还请多多指教;问题在移植了STM32官方库里的SD卡的例程时,需要获取SD卡的Card Status寄存器的值,这个寄存器的bit[12:9]代表着SD卡的一种重要参数:当前SD卡的...原创 2019-05-29 15:38:59 · 1512 阅读 · 0 评论 -
SD卡扇区擦除之整卡擦除(以及一些细节问题和疑惑)
前言其实这个博文是强迫症的产物,对产物;如果要在一个SD卡上建立文件系统FATFS,我带从这张卡的第0个字节,清除到最后一个字节,确保卡上“无残留”,从而不会影响我后续的工作;当整张卡被清除的那一刻,开心!!!文章中的例程包含标准容量卡SDSC的和高容量卡SDHC的例程;以我16G的金士顿SD卡为例;流程首先你需要获取SD卡上的CSD寄存器值,从而计算出当前卡的准确容量,可以看我...原创 2019-06-02 21:39:54 · 6046 阅读 · 0 评论 -
错误:error: #268:declaration may not appear after executable statement in block
前言:本博客基于STM32标准库和MDK环境,在不同环境,情况可能不同;翻译:声明可能不会出现在可执行语句之后的块中;解释:(我理解为)报错处所声明的内容(变量或者其他)之前有可执行语句;解决办法:将声明定义的变量或其他放在函数开头;举例:报错:改正:...原创 2019-07-14 15:33:07 · 19824 阅读 · 6 评论 -
错误:error: #70: incomplete type is not allowed
前言博文基于STM32标准库和MDK环境下编写;我只列举两种出现这个错误的类型,其他类型碰见再说;翻译:错误的不完整类型;类型一:在b.c文件中需要引入一个a.c中的结构体变量,,我在b.c中直接extern 这个结构体,,结果编译时报错error: #70: incomplete type is not allowed最后上网查找才知道结构体不能这样引入。解决办法:1.在a.h中...转载 2019-07-14 20:59:16 · 7502 阅读 · 3 评论 -
STM32F103ZET6的引脚分类和几个需要特殊注意的引脚总结
前言本博文基于STM32F103ZET6编写;如有不足之处,多多指教;多功能引脚图下图为STM32芯片引脚细节图由图片可知,STM32大部分GPIO都有复用功能,所以在配置的时候要格外小心;下图为**《STM32大容量手册》引脚功能分类图**引脚分类(按照我自己理解给分的类)第一类:非GPIO单功能引脚电源引脚Vdd;接地引脚Vss;芯片掉电保持引脚VBAT;外部晶...原创 2019-07-15 10:50:56 · 48014 阅读 · 2 评论 -
ILI93xx屏幕坐标系及扫描方式配置(LCD学习笔记1)
前言博文基于STM32F103ZET6,MDK和3.5.0标准库开发如有不足之处,多指教屏幕坐标系(呵呵,我自己给取的名字)R50h~R53h:水平垂直RAM地址位置;用来设定整个屏幕上的显示区域;R50h(HSA[7:0]):水平起始地址寄存器;R51h(HEA[7:0]):水平结束地址寄存器;R52h(VSA[7:0]):垂直起始地址寄存器;R53h(VEA[7:0]):...原创 2019-07-15 20:28:10 · 3646 阅读 · 0 评论 -
STM32中断挂起和RTOS任务挂起的区别
中断挂起可以理解为:将中断设置为就绪状态,一旦符合条件,立即执行中断并进入中断函数;比如A和B的抢占优先级相同,A的响应优先级高于B,那么当产生A和B中断的事件发生时,先执行A,并同时将B挂起,一旦A执行完毕,立即执行B。RTOS的任务挂起以FreeROTS为例,因为某些原因不能立即执行的任务,可以将其挂起,这个挂起使得任务暂时无法参与任务调度。只有将任务唤醒之后才能继续参与;...原创 2019-09-08 09:51:39 · 1315 阅读 · 0 评论 -
JTAG error:can not read register while CPU is running
前言本博文的代码用STM32CubeMX生成,MDK调试。出现这个问题可能不止一种,所以下面我只列举几个解决办法,后续遇到问题再添加;如有不足,多多指教;解决办法https://blog.csdn.net/a379039233/article/details/73742325打开魔法棒,重新选择调试方式...原创 2019-09-09 08:21:15 · 1493 阅读 · 0 评论 -
STM32 程序卡死在启动文件startup_stm32fxxxx.s的SysTick_Handler中
出现的问题硬件调试的时候发现程序一直在启动文件下面箭头这行。显然是跟SysTick_Handler有关由于我使用了FreeRTOS,所以需要SysTick为系统时基单元,所以需要SysTick_Handler,但是我却没有定义此中断函数,所以导致上面的程序一直进入不了以SysTick_handler命名的中断函数;填上就好了;解决问题添加SysTick_Handler函数:...原创 2019-09-09 08:30:54 · 5334 阅读 · 2 评论 -
STM32 MDK变量显示"not in scope"的问题解决
直接提供两种方法的链接:(不一定哪一种能用)https://blog.csdn.net/gmpy_tiger/article/details/50395719https://blog.csdn.net/qlexcel/article/details/56279198转载 2019-01-25 23:53:14 · 3830 阅读 · 0 评论 -
STM32输入捕获--“PWM输入模式”(可拓展多路同时捕获)
前言博文基于STM32F103ZET6和标准固件库V3.5.0在MDK5环境下开发;本博文只讨论输入捕获的PWM输入模式,这个模式是STM32输入捕获检测脉宽和频率的一种硬件处理机制,大大减小了代码量,提高了检测效率,而实际上对于PWM信号的检测还有其他方法,并且关于繁琐的寄存器的介绍这里就不多说了,有兴趣的话可以直接去我的另外一个博客里去看: https://blog.csdn.net/w...原创 2019-01-20 15:07:43 · 12005 阅读 · 10 评论 -
STM32F10X时钟系统学习笔记
根据这个图片来解释时钟系统 1. STM32 有5个时钟源:HSI、HSE、LSI、LSE、PLL。 ①、HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。 ②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③、LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。 ④、LSE是低速外部时钟,接频率为3原创 2017-05-16 10:38:20 · 1269 阅读 · 0 评论 -
IWDG和WWDG分析
关于本博文的介绍: 1. 基于STM32F103ZET芯片和3.5V标准库 2. 分开介绍两种模式:独立看门狗IWDG和窗口看门狗WWDG 3.从寄存器,介绍到对应的库函数;一 什么是看门狗? 单片机系统在正常执行程序时,当收到外界各种物理干扰或其他原因出现程序跑飞或者陷入死循环的现象,而使得正常的程序无法正常运行,导致MCU挂掉,看门狗就是为了解决这么个问题而出现的;二 工作原理 在原创 2017-05-26 17:37:41 · 6371 阅读 · 1 评论 -
Systick分析
前言:目前我觉得自己还没有能够深入用到这个SysTick的时候,只是要用到了delay_us()和delay_ms(),因为碰到了这个问题,所以想着提前了解一下,免得后来造成一脸懵逼的情况;不过也觉得真正到项目开发的时候,这东西用别人写好的,初始化完了直接调用得了,但是毕竟没有社会经验的高手指点迷津。这里学习还是系统一点好;systick是个啥? 是一个24位倒记数定时器;systick的功能是原创 2017-05-17 16:56:12 · 4251 阅读 · 0 评论 -
STM32的NVIC和中断的总结
前言: 1.要想学习STM32中断,要先掌握STM32对优先级的定义; 2.有51单片机开发经验会比较容易理解中断优先级; 3.本篇博文基于STM32F103ZET6芯片和3.5.0标准库编写; 4.本篇博文从寄存器入手,最终实现编程的步骤;如有不足之处,还请前辈多多指教;一 基础知识 1. cortex-m3支持256个中断,其中包含了16个内核中断,240个外部中断。(本博文只介绍原创 2017-05-27 17:16:26 · 56101 阅读 · 21 评论 -
STM32处理器 RTC分析
前言: 1.博客基于ARM Cortex-M3内核的STM32F103ZET6和标准3.5.0库; 2.如有不足之处,还请多多指教一 RTC是什么? 1. 从结构上讲就是一个独立的定时器; 2. 从功能上来说就是为系统提供系统掉电不复位的日历时间; RTC分为两个完全能独立的部分:1. APB1接口;2. RTC核心; 功能: (1)APB1总线连接APB1接口并负责驱动APB1接口,原创 2017-06-16 17:33:09 · 1455 阅读 · 0 评论 -
STM32的USART分析
如果有51单片机对串口UART学习的基础,学这个应该会很容易; 本篇博文是基于STM32f103ZET6芯片和3.5.0库开发方式的博文; 如有不足指出,还望多多指教;串口框图 工程建立后,需要在工程中添加stm32f10x_usart.h和stm32f10x_usart.c文件; 串口设置的一般步骤 ①串口时钟使能,GPIO时钟使能 ②串口复位 ③GPIO端口模式设置 ④串口参数初原创 2017-05-21 13:30:43 · 1415 阅读 · 0 评论 -
STM32处理器定时器分析(实现一个定时中断)
前言: 1.本博文基于STM32F103ZET6芯片和ST官方提供的3.5.0库函数; 2.学习过51单片机学习STM32定时器会容易理解一些,但是两个定时器的实力有很大的距离; 3.定时器是难点也是重点; 4.本博文采用通用定时器展开; 5.关于定时器是什么这里不说了; 6.定时器结构稍复杂,功能也比较多,本博文根据一个简单的定时器中断实验展开;一 STM32定时器的分类 1.高级定原创 2017-06-03 14:14:45 · 3261 阅读 · 0 评论 -
STM32定时器输出比较(PWM)
前言: 1.本博文基于ARM Cortex-M3内核的STM32F103ZET6处理器芯片和标准3.5.0库函数; 2.不介绍PWM的基础概念,但是需要知道一点的是,PWM是输出比较的一种特例; 3.如有不足指出,还望前辈多多指教; 4.要想学会这个知识点,必须要掌握下面这位博友写的博客里的几个概念,不然后来很有可能会懵逼; http://blog.sina.com.cn/s/bl原创 2017-06-03 21:52:16 · 9364 阅读 · 2 评论 -
STM32处理器输入捕获分析
前言: 1.博文基于ARM Cortex-M3内核的STM32F103ZET6芯片和标准3.5.0库; 2.如有不足之处,还请多多指教;* 一 基本知识 * 1. 输入捕获的功能:用来测量脉宽或者测量信号频率; 2. 输了TIM6和TIM7外,其他定时器都有输入捕获功能; 3. 通用定时器输入捕获中断和定时器更新中断公用同一个中断函数;二 工作原理 如何获取一个脉冲的宽度(比如高电平):原创 2017-06-14 09:10:39 · 2552 阅读 · 0 评论 -
STM32 标准固件库的下载,文件介绍和工程的建立(综合)
前言博文基于ARM Cortex-M3内核的STM32F103ZET6芯片和标准3.5.0库;博文介绍标准库中个文件夹的含义和以及一个简单工程的建立;如有不足之处还请博友多多指教;标准库的下载标准库的获取方式:第一步:进入官网:https://www.st.com/content/st_com/zh.html第二步:依次进行下列操作在下面这个表格里,能看到很多系列的标准库...原创 2018-10-03 13:36:35 · 8665 阅读 · 3 评论 -
Cortex-M的M0,M+,M3,M4,M7几种内核的简单区别
Cortex-M内核M0,M0+,M3,M4,M7之间的区别 图片来自于www.stmcu.com.cn high-performance 高性能 Mainstream 主流 Ultra-low-power 低功耗知识补贴: 之所以ARM公司会把Cortex-M分为这么多系列,主要是针对不同的应用领域;下面详细介绍:Cortex-M分为:M0,M0+,M3原创 2017-05-06 20:15:41 · 67507 阅读 · 3 评论 -
STM32使用systick定时器定义硬件精准延时函数
前言博文基于STM32F103ZET6和标准固件库V3.5.0在MDK5环境下开发;本博文讨论的是芯片不运行操作系统的情况下完成1s的延时功能;如有不足之处还请多多指教;SysTick—系统滴答定时器是什么?是一个24位的硬件倒计数定时器;SysTick的功能是什么?(分两种情况)芯片运行操作系统(UCOS)情况下做:为操作系统(例如UCOS)提供硬件上的定时中断(滴答中断),...原创 2018-10-04 23:59:04 · 3833 阅读 · 0 评论 -
UART和USART的区别
UART定义 UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输...原创 2018-10-14 12:07:51 · 8288 阅读 · 2 评论 -
STM32的8种GPIO输入输出模式讲解
前辈的总结果然是厉害:https://blog.csdn.net/baidu_37366055/article/details/80060962转载 2018-10-07 20:18:59 · 1404 阅读 · 0 评论 -
通信的三种类型
从传输方向上可以分为单工通信、半双工通信、全双工通信三类。单工通信就是指只允许一方向另外一方传送信息,而另一方不能回传信息。比如电视遥控器、收音机广播等,都是单工通信技术。半双工通信是指数据可以在双方之间相互传播,但是同一时刻只能其中一方发给另外一方,比如我们的对讲机就是典型的半双工。全双工通信就发送数据的同时也能够接收数据,两者同步进行,就如同我们的电话一样,我们说话的同时也可以听到对方的...原创 2018-10-14 17:38:16 · 9090 阅读 · 0 评论 -
STM32 PWM占空比和信号周期的控制因素分析
前言博文基于STM32F103ZET6芯片,标准固件库3.5.0和MDK5编写;博文并不讨论PWM的基础知识,而是直接去谈对PWM灵活的控制问题;想全面了解的可以看看我写的专门针对PWM的博客: https://blog.csdn.net/wuyuzun/article/details/72851940如有不足之处还行多多指教;本实验以一个LED灯的亮度调节来说明;PWM的两个重要参...原创 2018-11-10 14:18:43 · 9129 阅读 · 1 评论 -
STM32外部中断(EXTI)分析和应用
学过51单片机的外部中断的话入门会很快; 本篇博文基于STM32F103ZET6芯片,与大多数STM32F10x芯片兼容; 代码基于ST官网提供的3.5.0标准库 如有不足之处,还望前辈多多指教;一些需要了解的基础知识 1. STM32每个GPIO口都可以作为外部中断输入口使用 2. 每个中断都设有状态位 3. 每个中断/事件都有独立的触发和屏蔽设置。 4. STM32103有19个外原创 2017-05-22 15:07:20 · 5460 阅读 · 0 评论