stm32
luck_horse
这个作者很懒,什么都没留下…
展开
-
STM32L071之GPIO注意事项(1)
STM32L071之GPIO注意事项(1)原创 2022-11-01 01:19:32 · 481 阅读 · 1 评论 -
STM32L071 IAP升级时“Cannot access target.Shutting down debug session”问题
STM32L071 IAP升级时“Cannot access target.Shutting down debug session”问题转载 2022-10-26 16:26:04 · 567 阅读 · 0 评论 -
STM32L051之IWDG使用及注意事项
STM32L051内部独立看门狗的使用及注意事项原创 2022-10-25 09:12:06 · 1075 阅读 · 0 评论 -
stm32f103rb升级到stm32f103rc时代码移植注意事项
1.由于stm32f103RC/RD/RE系列单片机芯片级的bug,代码中用到重映射相关函数的地方,在其后面添加__HAL_AFIO_REMAP_SWJ_NOJTAG();语句,如下所示: __HAL_AFIO_REMAP_TIM3_PARTIAL(); __HAL_AFIO_REMAP_SWJ_NOJTAG(); __HAL_AFIO_REMAP_TIM3_DISABLE(); __HAL_AFIO_REMAP_SWJ_NOJTAG();2.在工程配置...原创 2020-07-29 14:56:41 · 2479 阅读 · 1 评论 -
STM32PB2(BOOT1)使用注意
STM32 PB2(BOOT1)使用注意 由于STM32 PB2脚是复用引脚,而且该复用功能是用于启动选择,使用时就要小心了-------------------------------------------------------------------------BOOT1BOOT0 启动模式 说明X 0 ...转载 2020-04-08 22:50:49 · 5935 阅读 · 1 评论 -
STM32如何查找hardfault原因
STM32出现HardFault_Handler故障的原因主要有两个方面:1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。2、堆栈溢出。增加堆栈的大小。 出现问题时排查的方法:发生异常之后可首先查看LR寄存器中的值,确定当前使用堆栈为MSP或PSP,然后找到相应堆栈的指针,并在内存中查看相应堆栈里的内容。由于异常发生时,内核将转载 2017-07-25 19:45:54 · 1327 阅读 · 0 评论 -
STM32F103C8T6
STM32F103C8T6是一款基于ARM Cortex-M 内核STM32系列的32位的微控制器,程序存储器容量是64KB,需要电压2V~3.6V,工作温度为-40°C ~ 85°C。中文名STM32F103C8T6外文名STM32F103C8T6类 别集成电路(IC)家 庭嵌入式-微控制器总线宽度32位频 率72 MHz目录...转载 2018-08-14 16:16:25 · 19719 阅读 · 2 评论 -
STM32学习笔记:读写内部Flash。
首先我们需要了解一个内存映射: stm32的flash地址起始于0x0800 0000,结束地址是0x0800 0000加上芯片实际的flash大小,不同的芯片flash大小不同。RAM起始地址是0x2000 0000,结束地址是0x2000 0000加上芯片的RAM大小。不同的芯片RAM也不同。Flash中的内容一般用来存储代码和一些定义为const的数据,断电不丢失, RAM可以...转载 2018-08-14 16:17:53 · 736 阅读 · 0 评论 -
STM32:Flash擦除与读写操作(HAL库)
应用平台:STM32F030F4P6 ST官方库:STM32Cube_FW_F0_V1.9.0背景知识 绝大多数的单片机和微控制器(ARM,x86),地址空间都是以字节为单位的,也就是说一个地址是一个字节。 Flash存储器有个特点,就是只能写0,不能写1。所以如果原来的地址有数据了,意味着有一些位为0,这些位就相当于无效了。所以必须写之前确保他们都为1,只有擦除才可以。另外每...转载 2018-08-14 16:33:31 · 13096 阅读 · 1 评论 -
STM32F103之FLASH组织
原创 2018-08-14 16:40:41 · 919 阅读 · 0 评论 -
stm32篇--系统初始化
跟着程序执行流程走,main是程序入口,在里面进行了各种初始化。1.时钟配置 首先是RCC_Configuration(),里面进行了时钟基本的初始化,stm32有多个时钟源:(1)HSI上电默认启动,精度不高(2)HSE外部高速时钟,系统时钟一般采用它,经过PLL倍频;(3)LSE外部低速时钟,一般专门用于RTC;(4)LSI内部低速时钟,精度不高,一般用于IWDGCLK;...转载 2018-08-15 16:45:49 · 8800 阅读 · 0 评论 -
stm32 GPIO简单介绍及初始化配置(库函数)
前言:相信,大部分查找GPIO的人,都是刚刚接触STM32的人,而刚接触STM32的人,大部分是从51上来的人,所以我会由浅入深,从51和STM32的区别入手,通过对比这两个处理器的配置方法,来跟大家慢慢讲解(学知识可不能急于求成)。博主以stm32f1为主控芯片,以下均简称为stm32。首先,上一张我的理解图(画不好。。。但能看),给个形象的概念一、讲图之前,先给大家一个stm3...转载 2018-08-15 16:47:50 · 3888 阅读 · 1 评论 -
stm32 GPIO模式
本文章借鉴以及引用网上流传的攻略,由于作者不确定,所以直接借鉴来用了,不好意思,如有问题,联系博主整改。先上图:(参考手册P105)直接入正题,在STM32中,GPIO有八种模式: (1)GPIO_Mode_AIN 模拟输入(2)GPIO_Mode_IN_FLOATING 浮空输入(3)GPIO_Mode_IPD 下拉输入(4)GPIO_Mode_IPU 上拉输入...转载 2018-08-15 16:49:51 · 374 阅读 · 0 评论 -
STM32 TIMER初始化步骤
1、使能定时器时钟: RCC_APB1PeriphClockCmd(); 例如: RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); //开定时器3时钟1 22、设置定时器的基本参数(计数方式、计数周期、分频系数等) 注:①计数方式有TIM_CounterMode_Up(向上计数)、TIM_Counter...转载 2018-08-15 16:54:45 · 8628 阅读 · 0 评论 -
STM32初识——中断初始化过程(by woody)
在库函数中,配置 GPIO 与中断线的映射关系的函数 GPIO_EXTILineConfig()来实现的:void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)该函数将 GPIO 端口与中断线映射起来,使用范例是:GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPI...转载 2018-08-15 16:57:14 · 4328 阅读 · 0 评论 -
STM32系统时钟默认设置
“我们一直都说STM32有一个非常复杂的时钟系统,然而在原子或者野火的例程中,只要涉及到时钟,我们却只能看到类似的库函数调用,如RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);这个仅仅只是起到开启挂载在APB2线上的USART1时钟的作用罢了,APB2的时钟频率是多少我们并不知道”我们先来了...转载 2018-08-15 17:07:26 · 6613 阅读 · 1 评论 -
stm32外设初始化和设置过程
1.主应用文件中声明PPP_InitTypeDef结构体变量。 例:GPIO_InitTypeDef GPIO_InitStructure;2.为定义的结构体变量设置需要的值。设置变量中所有的值:PPP_InitStructure.member1 = value1;PPP_InitStructure.member2 = value2;... ...转载 2018-08-15 17:16:21 · 2961 阅读 · 0 评论 -
STM32_DMA 标准初始化设置解释
DMA 全称是:Direct Memory Access;根据 ST 公司提供的相关信息,DMA是STM32中一个独立于 Cortex-M3 内核的模块,有点类似于 ADC、PWM、TIMER 等模块;主要功能是起通信“桥梁”的作用,可以将所有外设映射的寄存器“连接”起来,这样就可以高速访问各寄存器,其传输不受 CPU 的支配,传输还是双向的;例如,从“表面”上看,它可以将 flash 中的数据与...转载 2018-08-15 17:29:48 · 4849 阅读 · 0 评论 -
STM32单片机,禁止系统启动时的变量初始化
使用这个功能是在IAP在线升级时需要用的。最初使用在EEPROM或者FLASH存储一个标志位。程序跳转到BootLoader,BootLoader来判断是否需要升级。这样是可以用的,但是这样有个弊端:如果升级中出现问题,或者其他原因,导致主程序无法正常运行,看门狗咬死程序,程序复位。这样子的话,程序会一直在 引导--引导程序检测到不需要IAP--跳转到应用程序--看门狗咬死--复位--...转载 2018-08-15 17:33:24 · 1334 阅读 · 0 评论 -
STM32系统学习——DMA(直接储存器访问)
DMA主要功能是传输数据,但是不需要占用CPU,即在传输数据时,CPU可以做别的事,像多线程。数据传输从外设到存储器或者从存储器到存储器。DMA控制器包含了DMA1和DMA2,其中DMA1有7个通道,DMA2有5个通道,可以理解为传输数据的一种管道。要注意的是,DMA2只存在于大容量单片机中。 一、DMA框图解析 DMA控制器独立于内核,属于一个单独外设,结构结合下图来看 1.DMA请求 ...转载 2018-08-15 17:36:21 · 1074 阅读 · 0 评论 -
stm32-串口接受不定长数据方法(3种)
2017年06月15日 16:54:16阅读数:13692方法1:串口接受数据,定时器来判断超时是否接受数据完成。方法2:DMA接受+IDLE中断 实现思路:采用STM32F103的串口1,并配置成空闲中断IDLE模式且使能DMA接收,并同时设置接收缓冲区和初始化DMA。那么初始化完成之后,当外部给单片机发送数据的时候,假设这帧数据长度是200个字节,那么在单片机接收到一个字节...转载 2018-08-13 10:59:55 · 445 阅读 · 0 评论 -
利用STM32 的串口来发送和接收数据实验
0目标1 STM32 串口简介2 硬件设计3 软件设计4 下载验证0.目标利用串口 1 不停的打印信息到电脑上,同时接收从串口发过来的数据,把发送过来的数据直接送回给电脑。 1.STM32 串口简介 串口设置的一般步骤可以总结为如下几个步骤:1) 串口时钟使能, GPIO 时钟使能2) 串口复位3) GPIO 端口模式设置4) 串口参数初始化...转载 2018-08-13 11:16:44 · 6300 阅读 · 0 评论 -
教你使用stm32接收串口的一帧数据!
stm32支持接受单个数据或者一帧数据,若配置单个数据接收中断的话,会出现接收包丢包,数据不完整的情况!因此在stm32的串口中断中,还有一个IDLE中断,用来产生串口接受一帧数据而产生的中断,比如说串口发来n个数据,会产生n次接收中断和一次IDLE中断,因此方便使用者来接收主机发送或者从机返回的数据!若想发送一帧数据到串口请参照我博客中的另一篇文章——教你如何使用stm32发送一帧数据! 为了方...转载 2018-08-13 11:19:07 · 4164 阅读 · 0 评论 -
STM32F103外部晶振由8M变为12M注意事项
官方提供的库文件中,HSE(外部高速时钟)默认为8MHz,最高主频为8*9=72MHz,如果将HSE变为12MHz,不修改库文件的话,最高主频则变为12*9=108MHz,最典型的问题就是USART可以通信,但是接收到的数据与发送的不一致,并且找不到啥原因,害的我瞎折腾了一整天,下面列举需要修改的地方。1、修改stm32f10x.h中的HSE_VALUE,原本的代码如下: #if !de...转载 2018-08-18 09:18:52 · 6336 阅读 · 1 评论 -
st-link和jlink调试stm32接线注意事项
1.板子由外部电源供电。2.ST-LINK只需要接TCK,TMS,GND这3跟线就可以了。3.J-LINK需要多接上板子上的芯片工作电源线到VT上才能正常工作。4.一定要注意调试器输出的电压和板子输出的电压是否有差异。...原创 2018-08-18 09:22:29 · 9093 阅读 · 0 评论 -
STM32F103V IWDG 独立看门狗操作
最近编写一个程序,因为需要考虑到可靠性,所以需要在程序了添加看门狗功能。查了下STM32的相关资料,于是利用下库文件来实现IWDG独立看门狗操作。首先需要调用库文件 #include "stm32f10x_iwdg.h"再配置下看门狗相关参数//////////独立看门狗IWDG设置////////////////////////////////////void WatchDog_int...转载 2018-08-18 09:31:32 · 1569 阅读 · 1 评论 -
STM32F103C8T6学习笔记_时钟
1、GPIO是挂载在APB2总线上的外设使能时钟 PB端口RCC_APB2PeriphClockCmd(RCC_APB2PerIiph_GPIOB,ENABLE);2、USART1是挂载在APB2总线上的使能USART1RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); ...转载 2018-08-18 15:20:20 · 7308 阅读 · 1 评论 -
STM32F103单片机系统时钟部分归纳
STM32F103系列增强型微控制器——时钟控制(RCC)三种不同的时钟源可用作系统时钟(SYSCLOCK): HIS振荡器时钟(由芯片内部RC振荡器提供) HSE振荡器时钟(由芯片外部晶体振荡器提供) PLL时钟(通过倍频HIS或HSE振荡器倍频得到)另外还有两个时钟源: LSI内部40kHz低速RC振荡器时钟,用于驱动独立看门狗或选择驱动RTC LSE外部32....转载 2018-08-18 15:26:48 · 3543 阅读 · 0 评论 -
stm32F103的systick时间不准终于找到原因了
主函数已经定义SysTick_Config(72000000/1000);但是中断void SysTick_Handler(void) 中PIO引脚闪烁的时间总感觉不对,最后在sdk中观察systick寄存器发现ctrl一直为0x00000003,本来默认的是系统时钟/8为systick的时钟,我已经在主函数中更改为SysTick_CLKSourceConfig(SysTick_CLKSource...转载 2018-08-18 15:41:30 · 20781 阅读 · 0 评论 -
STM32外设驱动---SysTick精准延时
单片机:STM32F103 库函数:V3.5 描述:利用系统内核文件core_cm3.c内部SysTick实现1ms,1us的精准延时,时钟72MHz,涉及中断服务SysTick_Handler的注册。delay.h#ifndef __DELAY_H__#define __DELAY_H__#include "stm32f10x.h"extern void ...转载 2018-08-18 16:06:00 · 514 阅读 · 0 评论 -
STM32下SysTick的一个容易发生的错误,时钟频率设置
今天同事测试我之前写的一个小程序,发生了奇怪的错误,先是Uart通讯接收操作,出现了接收数据不全的问题:2个字节的应答帧,在实际运行中只能收到1个字节,导致程序死循环。检查后发现,是接收部分代码留的延时太短,造成了芯片误以为通讯已结束,但实际应答帧尚未传输完毕。(此处接收代码的工作模式是:当Uart接收到1个字节后,即开始一个定长的延时,该延时长度与通讯波特率相关,当正常通讯还在继续时,则应在延时...转载 2018-08-18 16:07:33 · 1124 阅读 · 0 评论 -
IAR stm32中函数硬是要加上声明才能编译通过,记录一下
硬是要加上声明才能编译通过,记录一下。原创 2018-08-18 16:37:26 · 734 阅读 · 0 评论 -
STM32F103mini教程通用定时器
一.通用定时器的基本原理1.三种STM32定时器区别2.通用定时器功能特点描述(1)STM32 的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定时器功能特点包括:①位于低速的APB1总线上(APB1)②16 位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)。③16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时...转载 2018-08-16 15:53:58 · 3178 阅读 · 1 评论 -
STM32定时器学习---基本定时器
STM32F1系列的产品,除了互联型产品外,工位8个定时器 TIM6、TIM7:基本定时器 TIM2/3/4/5:通用定时器 TIM1、TIM8:高级定时器三种定时器的区别: 基本定时器: 基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。它们可以作为通用定时器提供时间基准,特别地可以为数模转换器(DAC)提供时钟。实际上,它们在芯片内部直接连...转载 2018-08-16 16:45:45 · 322 阅读 · 0 评论 -
STM32F103的11个定时器详解
STM32F103系列的单片机一共有11个定时器,其中:2个高级定时器4个普通定时器2个基本定时器2个看门狗定时器1个系统嘀嗒定时器出去看门狗定时器和系统滴答定时器的八个定时器列表;8个定时器分成3个组;TIM1和TIM8是高级定时器TIM2-TIM5是通用定时器TIM6和TIM7是基本的定时器这8个定时器都是16位的,它们的计数器的类型除了基本定时器TIM6和TIM7都支持向上,向下,向上/...转载 2018-08-16 16:47:08 · 32847 阅读 · 2 评论 -
STM32+IAP方案 实现网络升级应用固件
关注了这个概念有些日子了,这段时间总算有机会实战==网络升级应用固件,这里记录下遇到的问题,及解决方案。 原理与网上流传的串口作为传输手段 一致;不同之处,无非我这里使用了网络设备传输。==(lwip)TFTP客户端的应用. 参考: IAR环境下STM32+IAP方案的实现 STM32浅谈之IAP.pdf 基于IAP和Keil MDK的远程升级设计 keil MDK中如何生成*.bin格式的文...转载 2018-08-26 22:28:56 · 2874 阅读 · 0 评论 -
stm32IAP代码升级小结
1 概述最近负责项目代码升级这一部分,在这里做一个小结。要实现程序的远程升级,需要用到两个程序,一个是Bootloader,另一个就是APP。单片机开机首先执行Bootloader,然后对APP进行引导。2 流程图在我们的项目中两个程序的流程图大致如下:开始BootLoader需要更新?app循环更新代码?接收,写入更新代码yesnoyesno说明:需要更新时,通过GPRS模块...转载 2018-08-26 22:29:57 · 247 阅读 · 0 评论 -
IAR的const,变量指定绝对地址,函数指定存取区域
今天要用到ROM-DATA,看了下IAR编译器手册,记录如下:转载 2018-08-22 17:07:09 · 1897 阅读 · 0 评论 -
IAR之函数和变量的绝对地址定位
IAR之函数和变量的绝对地址定位 转自:http://blog.csdn.net/slj_win/article/details/21516497 昨天我突然冒出个想法,能否利用函数和变量的绝对定位,实现程序的模块化更新。 也就是说,如果我要改变某个函数,只需要更新flash里面一个局部,也许只需要更新几百个字节,而无须重新下载整个上百K的程序。 经过查找资料和反复实验,终于...转载 2018-08-22 17:11:31 · 3093 阅读 · 0 评论 -
STM32调试过程中,读保护,写保护造成的无法擦写芯片问题的解决办法和相关讨论
调试Flash读保护时,Jlink不能下载程序发布: 2010-1-20 22:54 | 作者: linew | 来源: StmFans思蜕盟 OPELC 自由电子联盟调试flash读保护时,点了jlink中Unsecure chip 后 能连接、能擦出芯片,但不能下载程序和读芯片,请问怎样解决···binglin (2010-1-20 22:59:47)J-Flase ARM里下载程序...转载 2018-08-17 18:09:34 · 5337 阅读 · 0 评论