推荐阅读最新更新时间:2024-03-16 15:39
STM32出现HardFault_Handler问题查找方法
STM32出现HardFault_Handler故障的原因主要有两个方面: 1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。 2、堆栈溢出。增加堆栈的大小。 出现问题时排查的方法: 发生异常之后可首先查看LR寄存器中的值,确定当前使用堆栈为MSP或PSP,然后找到相应堆栈的指针,并在内存中查看相应堆栈里的内容。由于异常发生时,内核将R0~R3、R12、LR、PC、XPRS 寄存器依次入栈,其中LR即为发生异常前PC将要执行的下一条指令地址。 注意:寄存器均是32位,且STM32是小端模式。(参考Cortex-M3权威) 编写问题代码如下: void StackFlow(void) { in
[单片机]
stm32 以太网启动后再插网线的问题
STM32加lwip, 在启动时没插网线,启动后再插网线,会发现网络功能无法使用,是因为启动过程中初始化网络失败。 这种情况,需要在CubeMX的lwip配置中,允许LWIP_NETIF_LINK_CALLBACK , 在主循环中加入函数 ethernetif_set_link(netif_default); 检查网线是否连接。 然后自己增加回调函数, void ethernetif_notify_conn_changed(struct netif *netif) { /* NOTE : This is function could be implemented in user file w
[单片机]
stm32.cube(八)——HAL的配置文件
一、生成配置文件 在HAL的头文件目录下有一个默认的配置文件stm32f1xx_hal_conf_template.h。在编译HAL代码前,要将这个文件拷贝为stm32f1xx_hal_conf.h,修改部分宏定义,用来修改HAL的全局配置。 二、配置文件内容 2.1 模块使能 一旦使用了相应的模块,就要定义相关的模块使能。 #define HAL_MODULE_ENABLED #define HAL_ADC_MODULE_ENABLED #define HAL_CAN_MODULE_ENABLED #define HAL_CEC_MODULE_ENABLED #define HAL_CORTEX_MODULE_ENABL
[单片机]
基于STM32+SHT30设计的环境温度与湿度检测系统(IIC模拟时序)
一、项目功能介绍 当前介绍基于STM32F103ZCT6芯片设计的环境温度与湿度检测系统设计过程。当前系统通过SHT30温湿度传感器采集环境温度和湿度数据,并通过模拟IIC时序协议将数据传输到STM32芯片上。然后,STM32芯片通过处理这些数据并将它们显示在0.91寸OLED显示屏上,以便用户能够方便地观察环境温度和湿度的变化情况。 系统的主控芯片采用了STM32F103ZCT6,这是一款高性能的32位ARM Cortex-M3微控制器,具有丰富的外设和存储器资源,可满足各种应用的需求。温湿度检测传感器采用了SHT30,这是一款高精度的数字式温湿度传感器,具有快速响应、低功耗、高可靠性等特点。 为了实现数据的显示,系统采
[单片机]
STM32 ISP下载模式和JLINK下载模式
1: ISP下载也是串口下载,需要设置端口BOOT0 = 1,BOOT1 = 0,并且下载的时候要复位一下 2:JLINK下载需要设置BOOT0 = 0,BOOT1 = 0,用相应软件下载即可
[单片机]
STM32串口环形缓冲区
1:概述 1.1:本篇实现串口驱动,实现printf函数的重定向,实现串口的中断接受和发送,效仿modbus协议中的3.5T超时机制,判断是否接受完毕; 1.2:如果串口仅仅是实现一个控制台,打印一些debug数据,使用printf函数(串口发送数据忙等待),如果是需要用串口进行外设设备的控制,比如串口GPRS模块,需使用串口中断进行控制,因为受限于串口的传输速率,如果使用忙等待发送数据,会阻塞主程序中的其它任务; 1.3:使用sysclk作为超时定时器,sysclk的中断优先级需高于串口中断; 1.4:除过使用3.5T超时时间判断接受数据是否完成外,还可使用ASCLL码的形式,利用字符操作库函数,自定义串口通信协
[单片机]
STM32--UART异步通信学习
字符发送的过程描述:在UART的发送过程中先将数据输入到发送数据寄存器中(TDR)此时(TXE)被硬件置1,之后TDR寄存器将数据串行移入到发送移位寄存器中,将数据在TX端口发送,此时(TC)被硬件置1。 发送与接收是逆过程。 UART发送配置步骤: 1.通过USART_CR1寄存器上置位UE来激活USART。 2.编程USART_CR1的M位来定义字长。 3.在USART_CR2中编程停止位的位数。 4.如果采用多缓冲器通信,配置USART_CR3中的DMA使能位(DMAT)。按多缓冲器通信中的描述配置DMA寄存器。 5.利用USART_BRR寄存器选择要求的波特率。 6. 设
[单片机]
STM32和CAN总线在温度监控系统中的应用
引言
现代工业控制领域通常要测量很多信号,将其转化为计算机可以识别的二进制信号,并利用计算机监视和记录各种测量的信号。这个过程就要涉及到信号的采集和处理。CAN总线是一种串行多主总线,它卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。本文介绍了基于STM32和CAN总线的温度监控系统的设计,通过上位机与下位机的通信,实现对温度数据的监控,并经初步实验达到了设计的要求。
1 系统总体方案概述
系统总体框图如图1所示,本系统采用主站+从站的结构,CAN主站主要实现温度数据的存储以及CAN总线协议和串口协议之间的桥接,
[嵌入式]