![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
stm32
文章平均质量分 60
大文梅
我很懒,还没有添加简介
展开
-
stm32f4单片机强制类型转换为float程序跑飞问题
可以看到地址0x20013A31非对齐,最终在执行VLDR指令时导致跑飞。,其中data为uint8类型指针,指向的value地址为。跑飞后查看SCB寄存器发现确实是非对齐访问导致跑飞,有两种解决方式,一种是关闭浮点运算,如iar。如题,在一个数据解析函数中使用了。或者强转时使用中间变量,如。VLDR需要使用对齐访问。原创 2024-04-24 11:23:52 · 517 阅读 · 0 评论 -
stm32f429FMC外设学习
这是一种型号为 W9825G6KH 的 SDRAM 芯片内部结构框图,以它为模型进行学习地址控制SDRAM 包含有“A”以及“BA”两类地址线, A 类地址线是行(Row)与列(Column)共用的地址总线, BA 地址线是独立的用于指定 SDRAM 内部存储阵列号(Bank)。在命令模式下, A 类地址线还用于某些命令输入参数。通讯时当 RAS 线为低电平, 则“行地址选通器”被选通,地址线 A[12:0]表示的地址会被输入到“行地址译码及锁存器”中,作为存储阵列中选定的行地址,同时地址线原创 2023-02-16 09:57:56 · 1678 阅读 · 0 评论 -
stm32bootloader跳转函数
【代码】stm32bootloader跳转函数。原创 2023-01-11 16:28:19 · 640 阅读 · 0 评论 -
stm32Flash编程偶发性失败以及UART出现ORE进入RXNEIE中断
stm32Flash编程偶发性失败以及UART出现ORE进入RXNEIE中断转载 2023-01-11 11:35:41 · 1126 阅读 · 0 评论 -
stm32页编程写入失败问题
stm32页编程写入失败原创 2022-09-08 16:07:36 · 1206 阅读 · 0 评论 -
stm32f103串口接收队列,DMA循环模式+空闲中断(3)
stm32f103串口接收队列,DMA循环没事+空闲中断,5串口全支持原创 2022-03-22 17:02:37 · 2129 阅读 · 0 评论 -
stm32f103串口接收队列,DMA循环模式+空闲中断(2)
之前有过一篇文章,不过那个只支持1个串口,而stm32f103大容量有5个串口,写这一篇的目的正是为了支持所有串口,可通过宏定义USE_USARTx进行设置使用串口的情况。关于基础部分,主要是原理的讲解可参考:https://blog.csdn.net/qq_40831436/article/details/115071656?spm=1001.2014.3001.5501串口初始化讲解初始化说明:5个串口并非所有串口都支持DMA传输,由下表所知,只有串口1-4具备DMA,而串口5无,所以,本程序中,串原创 2021-08-10 15:38:00 · 2068 阅读 · 0 评论 -
stm32f103串口接收队列,DMA循环模式+空闲中断
串口通讯最主要的就是要不丢数据,不丢帧,基本设想就是建立一个大的串口缓冲区,串口接收到的数据使用循环队列的方式全部往这个缓冲区放,不过这种方式需要把串口缓冲区弄大一点,防止数据覆盖。在stm32中,利用DMA+空闲中断很容易做到这一点。只需要将DMA设置为循环模式,如下图:也就是说,在循环模式下,当DMA传输了一个数据,DMA_CNDTRx传输数量寄存器相应减一,当DMA_CNDTRx传输数量寄存器减为0时,DMA_CNDTRx寄存器将恢复为相应的初始值,不用软件干预,那么,这不就是循环队列的方式吗?原创 2021-03-22 16:07:13 · 10046 阅读 · 18 评论 -
将stm32f103的工程模板改为stm32f105vc,修改为8MHz时钟
103的工程模板改105的大体步骤和上一篇ZET6改C8T6的相差不大,只是改成105之后,问题就来了,发现它的 HSE_VALUE 默认定义为25MHz,WTF,板子都做回来了,晶振买的也是8MHz,搞个锤子#if !defined HSE_VALUE #ifdef STM32F10X_CL #define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */ #else原创 2021-03-12 20:27:25 · 888 阅读 · 0 评论 -
stm32f103zet6的keil工程改c8t6
1、将芯片型号改为c8t62、将预定义STM32F10X_HD改为STM32F10X_MD,在C/C++选项下3、确保芯片的flash是中等容量芯片大小4、将启动文件修改原创 2021-03-12 14:03:58 · 998 阅读 · 0 评论 -
按键的消抖处理
消抖思路:按键从识别按下开始,持续一个消抖时间,如果按键继续按下,则判定按键按下,否则按键未按下。总共四个按键,定义如下:`#define KEY1 0x00#define KEY2 0x01#define KEY3 0x02#define KEY4 0x03`按键按下的状态定义如下:#define KEY_DOWN 1 //按键被按下#define KEY_UP 0 //按键弹起按键原创 2020-06-12 21:39:05 · 1396 阅读 · 0 评论 -
关于写入Flash中的应用
使用文件系统出现一些很奇怪的问题,明明格式化写入读取这些都成功了,但是在使用的时候总是出现BUG,就使用数组记录了/*******************************************************函数名称 : Writter_BJ_Signal功 能 : 将当前的报警状态写入Flash中参 数 : 无返 回 值 : 无*************...原创 2019-11-15 14:21:43 · 256 阅读 · 0 评论 -
软件模拟SPI驱动FLASH芯片——SST26VF064
程序没什么好说的,软件模拟SPI驱动的网上也是挺多的,不过要说一下的就是SST26VF064这款芯片与其他FLASH不同的是,它上电之后有写保护位,搞了好一阵子都没有发现这个原因,后面还是我师傅发现要首先取消掉它的写保护位。代码如下:#ifndef _SPI_FLASH_H_#define _SPI_FLASH_H_#include "stm32f10x.h"#define SS...原创 2019-08-28 17:13:09 · 1834 阅读 · 12 评论 -
stm32中的CAN通讯列表模式配置解析与源码
选择两个32位筛选器,列表模式的话就是14*2=28个CAN帧。假如我想要筛选一个0x10f46601的帧,它的二进制为:0001 0000 1111 0100 0110 0110 0000 0001而筛选器为:xxxx xxxx xxxx xxxx xxxx xxxx xxxx x100 ,后面的100是因为扩展数据帧也就是说把上面要筛选的帧弄到这个筛选的X中,即:1 00...原创 2019-08-07 17:31:36 · 3856 阅读 · 2 评论 -
stm32f103串口通讯
写串口通讯的时候,刚开始没注意,写成了void Send_OneByte(char Data){ USART_SendData(USART1, Data); while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET ); //TXE空了就为1,非空为0}void Send_String(char *str){ int8_t ...原创 2019-08-08 18:16:37 · 647 阅读 · 0 评论