![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32
文章平均质量分 55
嗒曦
这个作者很懒,什么都没留下…
展开
-
keil如何查看变量的实时值
进入仿真之后,要选择view菜单下的 periodic window update,然后点击全速运行,也可以看到变量的值。如下图:vu16类型 就是volatile unsigned short int类型。局部变量在全速运行过程中观察不到,只有程序暂停时才能看到局部变量值。方法二:将局部变量改为全局变量,这样全速运行时也能看到变量值变化。如下图,可以看到变量i j k在main()函数外面。想要在全速运行时就能看到局部变量值的变化有两种方法。方法一:将局部变量声明为volatile类型。原创 2022-11-30 14:17:52 · 5587 阅读 · 1 评论 -
串口接收不定长 数据 DMA
串口可以配置成用DMA的方式接收数据,不过DMA需要定长才能产生接收中断,如何接收可变长度的数据呢?方法有以下3种:1.将RX脚与一路时钟外部引脚相连,当串口一帧发完,即可利用此定时器产生超时中断.这个实时性较高,可以做到1个字节实时监测.2.不改变硬件,开启一个定时器监控DMA接收,如果超时则产生中断.这个实时性不高,因为超时时间必须要大于需要接收帧的时间,精度不好控制.3.ST...原创 2019-12-27 14:51:38 · 1415 阅读 · 0 评论 -
6800接口数据建立时间保持时间
/RES、 DB0~DB7、 D/I、 CS这些信号都一样,6800有两个信号:E:使能信号 R/W读写控制(1:读, 0:M写)这两个信号替代了8080的 WR 和 RD 信号。二.基本操作LCD1602的基本操作分为四种:1.读状态:输入RS=0,RW=1,E=高脉冲。输出:D0—D7为状态字。2.读数据:输入RS=1,RW=1,E=高脉冲。输出:D0—D7为数据。3.写命令:输入RS=0,RW=0,E=高脉冲。输出:无。4.写数据...原创 2022-05-08 00:28:49 · 721 阅读 · 0 评论 -
8080接口数据建立时间保持时间
8080接口通常有这些信号:/RES:复位 DB0~DB7:双向数据 D/I:数据/指令选择(1:数据读写,0:命令读写) CS:片选信号 /WR:写入数据控制信号 /RD:读入数据控制信号原创 2022-05-08 00:24:45 · 324 阅读 · 0 评论 -
成熟好用的电池供电切换电路
特点:1、支持轻触开关、自锁开关 2、支持外接电源自动上电(焊接上D17即可实现) 3、支持待机常电输出 4、外接电源、锂电供电自动切换,由于PMOS内续流二极管的存在,切换过程不会出现电压跌落情况。 5、通过双PMOS背靠背连接,防止外接电源倒灌至锂电池电源标号说明:1、VCC_5V0 外接电源输入 2、LI_BAT 锂电池 3、VCC_SYS 主电源输出...原创 2019-12-28 15:43:05 · 4727 阅读 · 3 评论 -
STM32 3秒开关机
电源控制相关配置库函数2个模式进入函数void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry);void PWR_EnterSTANDBYMode(void);作用:前者进入停机状态,后者进入待机状态。2个使能函数void PWR_WakeUpPinCmd(FunctionalState NewSta...原创 2019-12-28 19:43:10 · 3329 阅读 · 2 评论 -
STM32 待机模式唤醒以及独立看门狗
环境:主机:WIN7开发环境:MDK5.23MCU:STM32F103CBT6说明:闹钟中断在待机模式下是进入不了的.本文进行了独立看门狗IWDG测试,以及待机模式更详细的测试.STM32中,复位分为3种:1.系统复位:外部复位,WWDG,IWDG,SW复位,低功耗管理复位.除复位标志寄存器RCC_CSR不被复位,全部都被复位2.电源复位:上电/掉电复位,从待机模式复位.上电/掉...原创 2019-12-28 20:03:35 · 1008 阅读 · 0 评论 -
SPI数据建立时间保持时间
建立时间和保持时间相对于时钟而言原创 2022-05-07 21:36:12 · 2205 阅读 · 0 评论 -
IIC 数据建立时间保持时间
原创 2022-05-07 21:16:17 · 3821 阅读 · 0 评论 -
一种非常实用的系统掉电检测和保护电路
系统掉电保护的重要性和可行性掉电检测保护电路功能框图LM393比较器电路运用MP1542升压电路运用掉电检测保护电路的电源波形和工作过程本文导读可靠性是每一个产品的灵魂,如果一个产品可靠性不好,那它就是一个失败的产品,因为客户不会使用存在风险的产品,然而产品的可靠性不仅受到上下电、复位等内部因素影响,还会被供电的突然关断、工作环境等外部因素干扰。产品的控制系统对突然断电的反应和保护措施...原创 2019-12-28 15:35:33 · 1870 阅读 · 1 评论 -
STM32 低功耗 调试心得
STM32 低功耗 调试心得MCU在进入STOP模式的时候,GPIO的状态都是保持在进入低功耗模式之前的状态,在最小系统中,MCU的GPIO都是悬空的,所以设置为何种状态都不会影响到功耗。但当连接到外设后,外设的电平状态和所连接的GPIO不一致的时候,就会产生电流。也就是所谓的漏电流!解决办法:将GPIO的对应GPIO都设置为输出高电平的状态(与GPIO接的模块引脚电平匹配),之后再...原创 2019-12-30 00:30:42 · 292 阅读 · 0 评论 -
STM32 产品低功耗待机方案处理
关于STM32进入低功耗,我简单的总结了一下:1.管脚电路设置 ,端口设置,外加上拉、下拉电阻切记不能随便加2.时钟设置, STM32的systick clock、DMA、TIM什么的,时钟能关就全都关掉,STM32低功耗很简单,关键是外围电路功耗是关键3.降压芯片 ,选择一个低功耗的LDO***,这个项目用到的LDO功耗就很不错,静态功耗10uA都不到。4.模式选择, 确定STM32设...原创 2019-12-28 21:57:45 · 1659 阅读 · 0 评论 -
STM32下载程序出现Invalid ROM Table
先断电,把BOOT0短接片换位置1,keil配置修改一下:进入Debug--Settings--Flash Download页面,把Program、Verify、Reset and Run前面的勾干掉(我还选了Erase Full Chip), 连续OK返回,下载程序,即擦除。恢复BOOT0短接片位置。再把刚才修改过的Debug配置改回来,下载,完成。造成原因是拷贝库里面的程序,它的晶振是8M的,配成180M,我板子是25M晶振,不改配置参数前提下,超死了。他们的解释是因为芯片内部有程序,并且里面.原创 2020-07-13 11:01:36 · 778 阅读 · 0 评论 -
STM32 FSMC基地址详解
//-----------------------------------------------------------------------------为什么RS一定要接到地址线上,不能RS连接一个普通io控制RS为高电平还是低电平吗。突然想到fsmc驱动是自动的,驱动lcd的时序的话也是跟sram的时序相似,如果把RS连接到一个普通io口上,由于fsmc是自动驱动的,手动调RS的高低电平就会导致RS信号的时序不对,lcd和mcu就无法进行正确时序的数据传输。大家都知道结构体中的地址是从上到原创 2022-03-10 18:45:49 · 2432 阅读 · 0 评论 -
指针数组和二级指针
三、函数调用的形参和实参我们需要注意以下几点:1、内存存储方式不同的不要互为形参和实参,比如上面说的连续存储内存和非连续存储内存,例int a[2][3]不要和int** d互为形参和实参2、以下是比较常用的实参和形参搭配方式实参 所匹配的形参数组的数组charc[8][10];数组指针char(*)[10];指针数组char*c[10]; 指针的指针char**c;指针数组char*c[10]; 不改变char(*c)[10]...原创 2021-06-16 22:23:52 · 49 阅读 · 0 评论 -
二维数组, 二级指针区别
注:为了方便解释,二维数组都按2行3列计算;下面的例子都是亲测有效一、写法及含义1、int a[2][3] = { {2,4,6}, {20,40,60} };:定义了一个行为2,列为3的二维数组,所以sizeof(c)为3*2*4=24字节2、int(*b)[3];:数组指针,指向列有3个的二维数组,因为是指针所以sizeof(b)为4字节(一个指针的大小)3、int*c[2];:指针数组,是一个数组,里面是两个int*类型的指针,所以sizeof(c)为2*4=8字节4、int** d原创 2021-06-17 00:01:31 · 699 阅读 · 0 评论 -
串口协议发送数据格式详细分析
如果单片机串行通讯出了问题,最有效的调试方法是用示波器观察收发数据的波形。通过观察波形可以确定以下情况:1、是否有数据接收或发送;2、数据是否正确;3、波特率是否正确;一、串行数据的格式异步串行数据的一般格式是:起始位+数据位+停止位,其中起始位1 位,数据位可以是5、6、7、8位,停止位可以是1、1.5、2位。起始位是一个值为0的位,所以对于正逻辑的TTL电平,起始位是一位时间的低电平;停止位是值为1的位,所以对于正逻辑的TTL电平,停止位是高电平。线路路空闲或者数据传输结束,对于正逻辑的原创 2021-06-20 21:37:30 · 11865 阅读 · 0 评论 -
STM32 终极字节对齐解析
一、全局变量对齐问题:基本上用户定义的变量是几个字节就是几字节对齐,这个比较好理解。uint8_t定义变量地址要1字节对齐。uint16_t定义变量地址要2字节对齐。uint32_t定义变量地址要4字节对齐。uint64_t定义变量地址要8字节对齐。指针变量是4字节对齐。二、结构体成员对齐问题:首先明白一点,结构体里面的变量是什么类型,此变量的位置就是至少要几字节对齐,所以就存在结构体实际占用大小不是这些变量之和。typedef struct{uint8_t...原创 2021-11-09 23:07:40 · 8449 阅读 · 2 评论 -
设置时钟频率下载程序修改
1.程序修改两个地方PLL_M 25#define HSE_VALUE ((uint32_t)250000002.重新下载一直复位下载原创 2021-07-16 08:45:45 · 112 阅读 · 0 评论