STM32
文章平均质量分 88
城南花已开..
这个作者很懒,什么都没留下…
展开
-
关于RS485的DMA发送,以及EN使能脚的自动切换
ST官方都有APPNOTE指导的(对于UART没有RS485功能的单片机型号而言):1、启动DMA前,先关闭UART发送完成中断,并清除发送完成中断标志;2、在DMA传输完成中断函数中,开启UART发送完成中断;3、在UART发送完成中断函数中,切换RS485为接收态;DMA中断时,只表示需要传送的所有数据字节全部传送到串口的发送数据寄存器中了。此时串口实际上还有2个字节并未发送完成,数据寄存器和移位寄存器中的2个字节还需要发送,并不能关闭串口发送。同理,如果是485切换方向,必须要等到.原创 2021-03-09 21:00:46 · 5239 阅读 · 1 评论 -
J-Scope V6.11m使用小结
一、使用平台芯片:STM32F407VET6编译软件:KEIL 5使用软件:J-Scope V6.11m二、使用方法1、目标板下载对应软件,并让软件生成对应的.axf文件。2、将j-link连接至目标板,打开J-Scope V6.11m软件,选择打开新的项目。3、按以下步骤建立项目,以及添加所需要监控的变量即可。三、附加1,更多使用方法及手册,点击软件右上角Help,About。...原创 2020-10-27 19:56:38 · 978 阅读 · 0 评论 -
STM32 堆栈大小的设置及分析
一、通过map文件了解堆栈分配(STM32、MDK5)--避免堆栈溢出环境:STM32F103C8T6,MDK5在最近的一个项目的开发中,每当调用到一个函数,程序就直接跑飞。debug跟进去看不出什么逻辑错误,但发现函数内局部变量声明之后,全局变量的值被清零,后来查看局部变量地址已经超出栈的范围,于是确定是栈溢出。如果不稍微了解一下堆栈,在开发过程中可能碰到各种奇怪的错误。二、.map和startup.s文件MAP文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,它可以在任何.原创 2020-10-15 22:31:28 · 14101 阅读 · 1 评论 -
关于STM32F4上CCM内存知识扩展
该篇用于记录一些使用方法之外的知识点。关于具体使用方法请看 STM32F4上CCM内存的使用小结(https://blog.csdn.net/qq_27747359/article/details/109085292)一、CCM内存的优点与缺点The main system consists of 32-bit multilayer AHB bus matrix that interconnects:Eight masters: – Cortex® -M4 with FPU ...原创 2020-10-14 22:38:08 · 1728 阅读 · 1 评论 -
STM32F4上CCM内存的使用小结
一、CCM内存介绍相较于F2,F4新加的一个特殊内部SRAM。64 KB CCM (内核耦合存储器)数据 RAM 不属于总线矩阵(请参见图 1 : STM32F405xx/07xx和 STM32F415xx/17xx 器件的系统架构)。只能通过 CPU 对其进行访问(dma等外设不能访问)。二、用法(基于MDK)1、自动分配法(不建议使用)设置完后,若重新编译,map文件里就会有这块SRAM的资源分配——由于IRAM1优先使用,而且一般SRAM1够用,就不会给它分配资源。2...原创 2020-10-14 22:08:46 · 4744 阅读 · 0 评论 -
CAN通讯故障分析
一、现象CAN监控器上出现错误帧。二、分析过程1、检查匹配电阻。两端均为120R电阻,全部断电后万用表测量为60R。(60R为最佳匹配电阻)2、测试发现单独接发送端,将接收端断开,问题消失,锁定问题为接收端问题。3、经过核查得知,发送端为500K波特率,接收端为250K波特率,导致问题出现。三、总结1、匹配电阻需两端120R。2、总线上只要有一个节点波特率不一致,将导致总线数据传输异常。此次为监控端、发送端为500K,接收端为250K。四、知识扩充1...原创 2020-08-03 21:47:23 · 8861 阅读 · 0 评论 -
STM32实时操作系统的FreeRTOS 和uCOS II的比较
freeRTOS比uCOS II优胜的地方:1。内核ROM和耗费RAM都比uCOS 小,特别是RAM。 这在单片机里面是稀缺资源,uCOS至少要5K以上, 而freeOS用2~3K也可以跑的很好。2。freeRTOS 可以用协程(Co-routine),减少RAM消耗(共用STACK)。uCOS只能用任务(TASK,每个任务有一个独立的STACK)。3。freeRTOS 可以有优先度一样的任务,这些任务是按时间片来轮流处理,uCOSII 每个任务都只有一个独一无二的优先级。因此,理论上讲,freeRT转载 2020-07-30 08:39:50 · 2202 阅读 · 0 评论 -
STM32 ~ BootLoad 总结与分析
boot地址为:0x8000000 ~ 0x800c000主程序地址为:0x800c000之后主函数之前添加一下中断向量偏移,以及程序起始地址。注意:相关外设时钟,比如定时器时钟、UART时钟等。必须在中断向量偏移程序之前初始化,否则相关外设会开启失败。(RCC_Configuration();) RCC_Configuration(); GPIO_Configuration(); NVIC_Configuration(); IWDG_Init(5,1562); /.原创 2020-06-03 21:22:00 · 1390 阅读 · 0 评论 -
STM32 DMA传输出错的防错机制
一、DMA 中断对于每个 DMA 数据流,可在发生以下事件时产生中断:● 达到半传输(每次传输都会触发,属于正常触发)● 传输完成● 传输错误● FIFO 错误(上溢、下溢或 FIFO 级别错误)● 直接模式错误可以使用单独的中断使能位以实现灵活性,如 表 43 所示。上诉为F4系列,F1系列中断只有三个,所以只需处理三个即可。见下图:二、常规操作我们正...原创 2019-06-26 20:45:59 · 10952 阅读 · 0 评论 -
keil中保存芯片内部ROM里数据(memory windows中的数据)
我们在使用keil时经常会使用memory windows来观察内存中的数据,但是有时候,比如ADC采样后,我们感觉数据比较有用需要导出来做进一步分析或者远程升级文件出错,那该如何做呢?首先调出调试命令窗口。软件仿真状态下View---->commandwindowskeil的调试命令中提供了一个SAVE命令,可以帮助我们解决这个问题。就是这个窗口了。我们按以下格式输入...原创 2019-06-13 15:37:23 · 2810 阅读 · 0 评论 -
如何判断CAN总线空闲以及帧间隙,计算传输速率
一、如何判断总线忙还是空闲呢进入 正常模式之前,bxCAN 必须始终在 CAN 总线上实现 同步。为了进行同步,bxCAN 将等待 CAN 总线空闲(即,已监测到CANRX 上的 11 个隐性位)。判断总线状态可以监测总线电压,简单来说CAN_H和CAN_L之间的差分电压大的(一般在2V左右)就是显性状态,差分电压小的(理论上是0V)就是隐性,当然容错CAN要复杂很多,就不是这样的。当你一...原创 2019-06-05 10:27:20 · 6680 阅读 · 4 评论 -
STM32 CAN通讯过滤器使用总结及代码分析
一、简介在 CAN 协议中,消息的标识符与节点地址无关,但与消息内容有关。因此,发送器将消息广播给所有接收器。在接收到消息时,接收器节点会根据标识符的值来确定软件是否需要该消息。如果需要,该消息将复制到 SRAM 中。如果不需要,则必须在无软件干预的情况下丢弃该消息。二、详细各概念2.1筛选器组bxCAN 控制器为应用程序提供了 28 个可配置且可调整的筛选器组 (CAN1和CA...原创 2019-05-01 12:16:49 · 2566 阅读 · 0 评论 -
STM32 CAN通讯的基本知识及硬件设计
一、简介● 支持 2.0 A 及 2.0 B Active 版本 CAN 协议● 比特率高达 1 Mb/s● 支持时间触发通信方案发送● 三个发送邮箱● 可配置的发送优先级● SOF 发送时间戳接收● 两个具有三级深度的接收 FIFO● 可调整的筛选器组: — CAN1 和 CAN2 之间共享 28 个筛选器组● 标识符列表...原创 2019-04-29 19:13:14 · 10573 阅读 · 0 评论 -
STM32 下载调试口(JTAG+SWD)禁用及作为普通IO口
1、RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //开启AFIO时钟2、GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);// 改变指定管脚的映射 注:GPIO_Remap_SWJ_JTAGDisable ,JTAG-DP 禁用 + SW-DP 使能 ...原创 2019-01-14 21:04:07 · 12314 阅读 · 0 评论 -
STM32 单ADC,多通道,DMA传输的多路数据采集
一、简介ADC相关配置分为:时钟使能,GPIO配置,ADC功能配置,DMA功能配置以及定时触发的相关配置。最终实现功能为:单个ADC,10个通道分别采集十路电压,DMA搬运,定时器触发,定时器中断中读取采集的数值。 二、程序 main(void) { RCC_Configuration(); //时钟初始化 GPIO_Config(); //GPIO...原创 2019-01-14 20:47:45 · 4323 阅读 · 3 评论 -
STM32关于PVD低电压能检测的知识
在实际工程运用中需要对突发情况作出及时的相应,通常都需要考虑当系统电压下降或断电时,需要对控制系统加以保护。这时候就需要在程序中加入系统电压监测(PVD)。供电电压降低到某一个电压值时,需要系统进入保护状态,执行紧急关闭任务(对系统数据进行保存,并对外设进行相应的保护操作)。传统单片机例如STC12C60S2,其自带A/D,可以利用A/D对工作电压进行检测,每隔一段时间进行比较,如果异常进入保护模...转载 2018-12-28 14:34:16 · 5224 阅读 · 0 评论 -
Keil MDK4中的Data,Xdata,Code 及 Keil MDK5中的Code, RO-data , RW-data, ZI-data
一 、基础知识字节8位半字16位字 32位二、Keil MDK4中的Data,Xdata,Codedata 内部RAM xdata 外部RAM code Flash-程序的大小 例如:51单片机256kb RAM 分为 128kb data 以及 128kb xdata。存储类型与存储区关系(扩展): ...原创 2018-12-13 19:56:31 · 2605 阅读 · 0 评论 -
关于RS485通讯中使用STM32串口以DMA方式发送数据丢失字节的问题
1、开发平台计算机操作系统:WIN7 64位;开发环境:Keil MDK 5.14;MCU:STM32F407ZET6;STM32F4xx固件库:STM32F4xx_DSP_StdPeriph_Lib_V1.4.0;串口调试助手;2、问题描述 在测试用STM32F4xx芯片的串口USART1以DMA方式进行RS485收发通讯时,出现数据字节丢失的现象,一般丢失1~...原创 2018-11-29 14:18:01 · 4023 阅读 · 0 评论