![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
stm32
文章平均质量分 62
不熬夜,早点睡
积累是一个漫长的过程
展开
-
STM32串口发送中断试验、在初始化时不能使能串口发送中断
问题描述在测试STM32串口发送完成中断的应用中,遇到了一个很奇怪的问题,在初始化完成之后直接就进入了串口中断函数的发送完成服务中断函数部分。本测试代码是在原来的基础上更改的,原来只使能了接受中断,此次仅仅是在初始化中加入了使能发送完成中断,所以问题的重点就处在了这个使能发送完成中断了。查阅资料发现,在使能了发送完成中断之后,硬件就会紧接着发送一个空字符,那么发送完成之后不就进入了中断服务函数了。一般的解决方法是在初始化中不使能发送完成中断。仅是在发送数据的函数中使能发送完成中断,然后在中断函数中Dis原创 2023-03-14 20:39:15 · 1940 阅读 · 0 评论 -
STM32的UART检测到上溢错误、一直进中断
不要想当然多看看手册,英文的为最官方的,中文也有翻译错的转载不声明,谭泥小机急。原创 2023-03-10 16:34:39 · 2639 阅读 · 0 评论 -
USART_ClearITPendingBith和 USART_ClearFlag的区别
==简而言之,函数USART_ClearFlag和函数USART_ClearITPendingBit的功能是一样的都是对SR寄存器某位进行清除操作,只是操作方式不一样==原创 2023-03-09 21:42:25 · 548 阅读 · 0 评论 -
STM32的USART发送数据时如何使用TXE和TC标志
程序想要做的是先把第一个字符写到DR寄存器,然后用TC标志位来判断为0就循环,先把第一个字符发出去再发第二个,但是,TXE标志位的作用才是这样,TC可不是这样的,看寄存器手册,上电后TC的复位值为1,此时,程序先把第一个字符写入DR,但是还没来得及发送出去,接着调用TC标志位的函数,TC标志位的函数是先读SR,再写第二个字符,第一个字符能被覆盖了。上边程序,先发送H在发送K,中间没有时间间隔,当H在TDR寄存器时,又发送K就把H覆盖了, 最终只有K发送到了移位寄存器,发送到了TX引脚。原创 2023-03-09 21:29:08 · 1800 阅读 · 1 评论 -
MDK软件不能模拟仿真STM32F407的问题解决方法
目前我也不太清楚其中的原理,只知道重新映射内存地址,还不知道按照这种配置哪里还存在隐性bug,最终我决定-放她一马,还是老老实实硬件仿真,hh,当然了,大家如果有简单地方法,分享分享哈。转载 2023-03-09 17:23:23 · 3017 阅读 · 0 评论 -
keil download之后直接就可以运行设置
keil download之后直接就可以运行设置原创 2023-03-09 12:18:20 · 954 阅读 · 0 评论 -
USART_GetITStatus与 USART_GetFlagStatus的区别
## 共同点都能访问串口的SR寄存器## 不同点 ***USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG):***该函数只判断标志位(访问串口的**SR**寄存器)。在没有使能相应的中断函数时,通常使用该函数来判断标志位是否置1 ***USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT) :***不仅会判断标志位是否置1(访问串口的**SR**寄存器),原创 2023-03-09 12:05:36 · 3420 阅读 · 3 评论 -
STM32串口通信中的USART_RecieveData函数
STM32串口通信中的USART_RecieveData函数分析原创 2023-03-08 22:06:08 · 426 阅读 · 0 评论 -
Encountered an improper argumen错误
错误原因其实是因为我们在调试完结束时候,有断点(红色圆点)还没有去掉,所以我们一点击停止调试之后,keil就会马上弹出这个错误,然后你就会发现你的keil关不掉了。,别问我怎么知道的,因为我自己崩了不下二三十次,试了keil的两个不同版本都会出现这种情况(当然不是所有版本都这样,因为本人只试了两个版本),直到我发现只有。同时,这里跟你说一下,如果已经弹出如上图所示提示,keil可能已经崩了,正常是关不了了,我基本上是通过任务管理器强行关掉的。,关调试的时候才不会弹出这种提示和导致keil崩。转载 2023-03-07 19:44:16 · 717 阅读 · 0 评论 -
USART与UART的区别
在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。数据接收单元用作异步数据的接收。STM32的USARTI同步模式,只是多了个时钟输出而已,它只支持时钟输出,不支持时钟输入,所以这个同步模式更多的是为了兼容别的协议或者特殊用途而设计的,并不支持两个USART之间进行同步通信。但是用在同步通信的时候,区别就很明显了:大家都知道同步通信需要时钟来触发数据传输,也就是说USART相对UART的区别之一就是能提供主动时钟。原创 2023-03-03 17:27:40 · 204 阅读 · 0 评论 -
NVIC 简介、抢占优先级和响应优先级
NVIC 简介、抢占优先级和响应优先级原创 2023-03-01 15:45:57 · 2668 阅读 · 4 评论 -
时钟振荡器的作用
上图的一个方波称为一个脉冲,类似于人类的脉搏跳动。对于每一个方形脉冲,电压或电路从0上升到最大值的那条线叫做上升沿;反之,电压或电流逐渐下降的那条线叫做下降沿。一个脉冲称为CPU的一个时钟信号,或者时钟脉冲。一个脉冲周期就叫CPU时钟周期,一个时钟周期内时钟信号震荡一次。原创 2023-02-28 19:07:08 · 880 阅读 · 0 评论 -
IAR版本不兼容问题
IAR版本不兼容,版本过低,提示The project filewas created by a newer version of the product and can notbe opened.原创 2023-02-22 19:01:03 · 2249 阅读 · 0 评论 -
指针数组和数组指针、字符指针
指针数组和数组指针、字符指针区别和联系原创 2023-02-16 18:08:32 · 755 阅读 · 0 评论 -
结构体的三种定义方法、结构体类型名(可选标志符)什么时候可以省略
结构体的三种定义方法、结构体类型名(可选标志符)什么时候可以省略原创 2023-02-14 13:17:51 · 10927 阅读 · 1 评论 -
keil如何添加外部程序
同样的步骤。原创 2023-02-09 12:44:05 · 2475 阅读 · 1 评论 -
keilkill.bat作用
这里主要占空间的就是Listing和objects这两个文件夹,这些都是工程的中间文件。这时它就会把这些中间应件都删掉,我们再看一下大小,这样就只要2M左右的大小了。如果要把工程分享给别人的话。可以先双击一下这个批处理件。因为这个工程编译产生的文件比较大,我们可以看一下。原创 2023-02-08 17:00:40 · 1364 阅读 · 0 评论 -
keil新建工程步骤
keil新建工程步骤原创 2023-02-07 20:20:43 · 3387 阅读 · 0 评论 -
NVIC简介、STM32外部中断
1.什么是NVIC·1.1相关结构体定义·1.1.1NVIC类型结构体定义·1.1.2NV1C初始化结构体·1.2相应固件库函数·1.2.1 NVIC EnablelRQ函数·1.2.2 NVIC DisablelRQ函数·1.2.3 NVIC GetPendingIRQ函数·1.2.4 NVIC SetPendingIRQ函数·1.2.5 NVIC ClearPendingIRQ函数·1.2.6 NVIC GetActive函数。原创 2023-02-06 09:07:05 · 462 阅读 · 0 评论 -
如何在watch窗口看gpio引脚的值?如何读对应的I/O口的状态?GPIO
如:GPIOA->IDR & 0x0001 即为 PA-1的电平状态,IDR寄存器的16位对应了该GPIO的P0-P15。原创 2023-02-03 22:09:43 · 480 阅读 · 0 评论 -
单片机外设复位的处理
最后,容易产生非同步复位,在处理器复位后,对外设写入命令时,可能被外设所复位掉,导致初始化出错。最可靠并最具操作性的是保证外设复位的可控性,使外设的复位信号与处理器复位信号分开,由处理器的某一GPIO来控制。对于应用系统中有多个外设时,不应该如图8(a)那样把多个外设的复位引脚连在一起,由处理器的一个GPIO控制,进行一次外部硬件复位。不同的外设,其复位时序要求不同,具有个性与特殊性,系统应根据具体的复位时序要求进行个性化复位,否则可能导致外设工作不正常。无法单独再次复位外设,因为外设是不可控的。转载 2023-02-03 21:39:05 · 2041 阅读 · 1 评论 -
在keil中不复位调试MCU
这篇文章的引用也是因为自己遇到的jlink自动复位程序搜到的,作为引用学习。转载 2023-02-03 21:21:23 · 1565 阅读 · 0 评论 -
单片机复位详解
共有三种类型的复位,分别为系统复位、电源复位和备份域复位。除了时钟控制寄存器 CSR 中的复位标志和备份域中的寄存器外,系统复位会将其它全部寄 存器都复位为复位值。只要发生以下事件之一,就会产生系统复位:1. NRST 引脚低电平(外部复位)2. 窗口看门狗计数结束(WWDG 复位)3. 独立看门狗计数结束(IWDG 复位)4. 软件复位(SW 复位)(请参见软件复位)5. 低功耗管理复位(请参见低功耗管理复位)这两个RESET的信号都会连接到NRST,简单理解就是说当RESET输出低电平小于0.8V并且持原创 2023-02-03 21:14:35 · 17364 阅读 · 1 评论 -
keil注释打不出中文?出现乱码
中文总是打不出来,出现这样,乱码。原创 2023-02-01 20:27:52 · 2174 阅读 · 1 评论 -
STM32的复位电路、ISP一键下载原理
这两个RESET的信号都会连接到NRST,简单理解就是说当RESET输出低电平小于0.8V并且持续100ns,stm32就会复位,先说上图,这个算是一个手动复位RC充电电路,上电的瞬间,电容C12两端电压可以认为是0,RESET会输出低电平,stm32处于复位状态,VCC3.3通过电阻R3给电容充电,当电容C12的电压升高到0.8V以上,stm32退出复位状态进入运行状态。你以为这么简单就完了?我们也可以DTR输出低电平,NPN管Q2截止,Q3也会截止,BOOT0输出为0,stm32进入正常运行模式。转载 2023-01-31 21:49:01 · 5411 阅读 · 1 评论 -
St-link(swd模式)和jtag连接
在给STM32烧写程序调试的时候,传统20脚JTAG底座个头大,占用PCB面积多,连接线复杂。采用SWD模式st-link,只需要四根线即可与目标板实现通讯,可实现程序下载,单步调试等功能,除了不能检测目标板电压、不能给目标板供电、速度有所降低之外,与完整版ST-Link的功能是一样的。原创 2023-01-31 20:40:41 · 3867 阅读 · 0 评论 -
stm32下载程序,拔了调试器不能运行程序
这是复位的问题,当JLINK在板子上连接的时候,断电情况下,会一直把RESET拉低,导致芯片一直处在复位状态,所以不能正常工作。把jlink或stlink和stm32板的的连接排线(jtag 接口)也拔掉,这个时候主板就可以工作了。A:肯定是只拔了仿真器与电脑连接的那端,然后把另外端依然接在板子上。B: 对的,这样就会一直复位吗。原创 2023-01-31 19:52:20 · 726 阅读 · 0 评论 -
STM32 MCUISP下载 开始连接...401, 接收到: 芯片超时无应答,无法连接
4)MCUISP 注意左下方:“DTR 低电平复位,RTS高电平进bootloader同时注意,usb线连接板子下方的usb-232口,而不是左侧的。2确保开发板的PA9,PA10跳线帽是默认的与CH340的两个引脚相连(发货的时候默认就连上)5波特率对于M4开发板,请选择76800,其他跟下图一样即可。我对比下USB_232和JTAG的电路图,也没明白其中的道理。3确保已经安装好了CH340驱动,1确保板子的BO.B1是接地的。原创 2023-01-31 17:03:34 · 4598 阅读 · 6 评论 -
电平是什么?单片机的I/0口输入和输出,1和0是什么?什么是TTL电平?TTL电平分析?TTL、CMOS、RS232、RS485电平差异?usb转ttl?CH340模块驱动安装?电平之间的转换?
TTL电平信号被利用的最多是因为通常数据表示采用二进制规定,+5V等价于逻辑“1”,0V等价于逻辑“0”,这被称做TTL(晶体管-晶体管逻辑电平)信号系统,这是计算机处理器控制的设备内部各部分之间通信的标准技术。电平是一个连续变化的电压范围,为了用这种模拟量的电压来表示数字量的逻辑1和逻辑0,TTL电平规定:对于输出电路:电压大于等于(≥)2.4V为逻辑1;电压小于等于(≤)0.4V为逻辑0;对于输入电路:电压大于等于(≥)2.0V为逻辑1;电压小于等于(≤)0.8V为逻辑0;原创 2023-01-31 14:51:12 · 6794 阅读 · 2 评论 -
keil5 出现 No Debug Unit Device found
下载方式不匹配。原创 2023-01-30 21:11:09 · 2157 阅读 · 0 评论 -
出现Old ST-LINK firmware detected.do you want to upgrade it?如何解决?
stlink固件太旧了。升级stlink固件。原创 2023-01-30 21:04:16 · 1534 阅读 · 1 评论 -
stm32常用开发工具集成开发环境、仿真器、串口调试助手对比
开发工具原创 2023-01-30 12:45:28 · 450 阅读 · 0 评论 -
stm32的程序在ROM和RAM中是如何运行的/在哪里执行的?
问题:stm32中的Code在程序运行时要不要拷贝到RAM里执行呢?还是直接从Flash中取程序指令执行?不是nandflash不能运行程序吗?难道32里用的是nor flash?转载 2023-01-20 15:05:01 · 1199 阅读 · 0 评论 -
单片机数据、地址、指令、控制总线结构
计算机系统是以微处理器为核心的,各器件要与微处理器相连,且必须协调工作,所以在微处理机中引入了总线的概念,各器件共同享用总线,任何时候只能有一个器件发送数据(可以有多个器件同时接收数据)。计算机的总线分为控制总线、地址总线和数据总线等三种。而数据总线用于传送数据,控制总线用于传送控制信号, 地址总线则用于选择存储单元或外设。原创 2023-01-19 21:31:25 · 3464 阅读 · 1 评论 -
看门狗是什么?
1、为什么需要看门狗?在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog)。2、看门狗解决的问题是什么?在启动正常运行的时候,系统不能复位。在系统跑飞(程序异常执行)的情况,系统复位,程序重新执行。原创 2023-01-15 21:45:34 · 3072 阅读 · 0 评论 -
基于STM32的室内环境监测系统、基于STM32的智能家居系统
采用STM32F103C8T6核心板作为系统控制单元,结合相关的传感器模块和软件资源完成以STM32F103C8T6为核心的室内环境监测系统。使用超声波传感器检测距离,通过LCD显示屏显示距离;通过温湿度传感器DHT11将检测到的实时室内温湿度数据发送给主控LCD显示,同时系统能够根据设定温度自动驱动加热模块进行升温,驱动风扇进行降温,达到自动控温的目的,也可手动进行升降温控制;使用光照传感器将采集的ADC数据进行分析周围光照强度,将光照的亮弱实时数据发送给主控LCD显示;原创 2023-01-14 20:34:01 · 3660 阅读 · 0 评论 -
什么是HAL库和标准库,区别在哪里?
参考文章https://blog.csdn.net/u012846795/article/details/122227823参考文章。原创 2023-01-14 14:11:57 · 10317 阅读 · 2 评论 -
什么是32位单片机?32位单片机有哪些优点和缺点?8位,16位,32位是什么区别?
单片机有8位单片机、16位单片机、32位单片机等多种,这里位指的是数据处理一次能的够处理的数据的位宽,32位单片机,就是指一次能够处理的数据的位宽是32个比特位的单片机。简单地说,32位单片机可以一次传输32位数据,其数据总线也是32条,32位数据类型最大的数据为32个1 换算成十六进制 就是 FF FF FF FF [4字节]十进制[4,294,967,295],单片机上的位宽 也就是最大的并口代表的数值 也是寻址能力。原创 2023-01-11 19:55:41 · 4122 阅读 · 0 评论