草庐IT

STM32 SPI驱动SD卡发送CMD命令没有返回正确值

       最近调试SD卡的时候遇到了发送CMD命令但没有收到正确回应的问题。先简单叙述一下开发环境,我使用的是STM32CubeMX+MDK5,板子用的是原子哥F407探索者。这次的需求是使用SPI驱动SD卡,并建立FATFS文件系统用于管理卡内数据,另外使能了串口1并重定向了printf到串口以便直接观察。       基本了解SD卡驱动流程后就直接开始实战操作(SD卡的驱动流程、卡的驱动及挂载文件系统的代码都可以在网上找,很容易能够找到,这里就不赘述了),在下载的代码基础上用if语句判断f_mkfs、f_mount和f_open函数是否成功执行,成功返回0,否则返回错误代码。建立工程文

STM32 FreeRTOS 内存问题

1.STM32L151C8T6内存,64Kb的Flash(代码就是烧录在这里面的),16Kb的RAM,程序跑起来之后的内存,相当于我们高考时发的草稿纸,直接影响程序的运行速度,可以用STM32CubeMx软件直接下载数据手册datasheet2.实际使用64KBFlash(ROM),10KBRAM,ROM还没用完了3.编译信息提供的内存具体大小4.搞OLED的时候搞了一个2KB的全局数组,直接导致程序运行不起来,Debug都进不了main主函数了,把数组调小一点,就可以正常运行起来,所以怀疑是内存溢出了#defineOLED_SCREEN_PAGE8//page[7-0]#defineOLED

STM32CubeMX教程26 FatFs 文件系统 - W25Q128读写

1、准备材料正点原子stm32f407探索者开发板V2.4STM32CubeMX软件(Version6.10.0)keilµVision5IDE(MDK-Arm)ST-LINK/V2驱动野火DAP仿真器XCOMV2.6串口助手2、实验目标使用STM32CubeMX软件配置STM32F407开发板使用FatFs中间件通过SPI通信协议对W25Q128芯片进行读写等操作3、实验流程3.0、前提知识关于STM32F407使用SPI通信协议对W25Q128FLASH芯片读写等操作涉及的SPI通信协议及W25Q128芯片相关知识请读者阅读STM32CubeMX教程20SPI-W25Q128驱动实验,本实

STM32堆栈溢出问题及解决方法

堆栈溢出是嵌入式系统开发中常见的问题之一,特别是在使用STM32微控制器时。堆栈溢出会导致程序崩溃、数据损坏甚至系统死机。本文将详细介绍STM32堆栈溢出的原因,并提供一些解决方法。堆栈溢出原因堆栈是用于存储函数调用和局部变量的内存区域,它是一种先进后出的数据结构。当函数调用时,函数的参数、局部变量和返回地址等信息都会被保存到堆栈中。如果函数嵌套层级过深或者局部变量占用的内存空间过大,堆栈的大小可能不足以容纳这些信息,从而导致堆栈溢出。堆栈溢出的影响堆栈溢出可能导致以下问题:程序崩溃:当堆栈溢出时,程序无法正确恢复函数调用和局部变量的状态,导致程序崩溃。数据损坏:堆栈溢出可能导致局部变量的值被

一步一步搭建S32K14x的AutoSar项目----MCAL之MCU模块

本章节主要介绍MCU模块相关内容一、S32K144时钟树介绍:二、MCU模块介绍:三、MCU模块配置:一、S32K144时钟树介绍:1-1、时钟对于任何一款微控制器是很重要的,所以我们首先要了解S32K144的时钟树,才能为后续的MCAL中MCU模块配置做好准备,废话不多说,先上一张图片,聊了解下对应芯片手册的第27章ClockDistribution。1、SOSC就是连接外部的高速时钟,我们一般情况下会优先选择它,精准度会很高,稳定下也很好,我们一般用8M或者16M的晶振,内部的时钟容易因为温度产生应先。2、FastIRC:内部高速时钟3、SlowIRC:内部低速时钟4、LPO:内部低功耗时

保姆级:Palworld幻兽帕鲁32人服务器一键部署

创建幻兽帕鲁服务器1分钟部署教程,阿里云和腾讯云均推出幻兽帕鲁服务器服务器和部署教程,4核16G和4核32G配置可选,阿腾云atengyun.com分享1分钟自建幻兽帕鲁Palworld服务器教程:幻兽帕鲁服务器创建教程幻兽帕鲁服务器官方推荐是4核16G配置,Windows和Linux服务器操作系统,Windows-Steam,Linux-SteamCMD,默认端口port=8211,玩家players=32,如下图:幻兽帕鲁服务器配置阿里云和腾讯云详细教程如下:腾讯云 https://curl.qcloud.com/kCzPKgFw阿里云 https://t.aliyun.com/U/DKi

普中STM32-PZ6806L开发板(HAL库函数实现-无源蜂鸣器响动)

简介本篇将驱动无源蜂鸣器进行5KHz的响动。电路原理图蜂鸣器电路原理图主芯片驱动引脚原理图其他知识蜂鸣器类型蜂鸣器分为有源蜂鸣器:触发就会响。无源蜂鸣器:需要给源,输出一定频率的音频信号,震动发声;占空比为什么占空比总是50%呢?当蜂鸣器的信号占空比较低时,即高电平时间较短,低电平时间较长。这时蜂鸣器的发声强度会较低,声音持续时间也较短。当蜂鸣器的信号占空比较高时,即高电平时间较长,低电平时间较短。这时蜂鸣器的发声强度也会较高,但声音持续时间相对较短。因为蜂鸣器在高电平时间过长的情况下,虽然能够充分振动产生较大的声音,但声音传播时间变短,导致发声时间较短。这种情况下,蜂鸣器的声音更加尖锐和紧凑

stm32平衡小车制作遇到的问题和解决方案分享

问题总览        1、电机带负载所引起的死区补偿问题        2、利用MPU6050传感器进行某一轴的角度测量问题        3、stm32串口通讯得到的数据用DMA转运问题一、电机带负载所引起的死区补偿问题        我选用的电机为直流减速电机,型号为GA25-370,是12V的电机。        电机运行分为带负载和不带负载的两种情况:不带负载的电机转速呈现饱和特性,带负载的电机转速呈现有死区的饱和特性。制作平衡车的时候不会让电机满速运行,所以我们可以近似地看做为线性特性和死区特性。平衡车一定是带负载的,那我们如何补偿呢?这里分享我的方法。    直流电机调速方案比较

基于STM32F1和MLX90640的红外热像仪

文章目录基本概述默认参数时,MLX90640的工作流程如下:测量帧解释:温度转颜色的方法为:成果展示:资源汇总基本概述STM32F103RCT6使用IIC接口与MLX90640采集数据,采集数据后使用LCD将温度转换为像素点输出到TFT-LCD屏幕,温度达到指定数值自动蜂鸣器报警,使用按键关闭报警声,源码文件文末自取。默认参数时,MLX90640的工作流程如下:(1)上电,内部初始化(约40ms)(2)读取工作参数到控制和状态寄存器(3)开始以2Hz的速率测量实时数据并更新到RAM,自动更新状态寄存器。测量帧解释:MLX90640共有768个测量像素点,每次测量其中的一半,称为1帧,故此完成7

【模块系列】STM32&TCS3472

前言  手上正好有TCS3472模块,也正好想在加深一下自己对I2C协议的理解和应用,所以就写了这个代码库出来。参考的资料主要来源于TCS3472的数据手册,和arduino中MH_TCS3472库的宏定义,和函数名称,我就没有重新命名,方便大家理解和使用修改之类的。环境开发板:STM32C6T6最小系统板案例的代码环境:Keil5+STM32CubeMX生成的HAL库,OLED(4P)+TCS3472案例接线:TCS3472模块的VIN接到ST-LINK的5V,OLED模块VCC接3.3V。TCS3472和OLED的SDA接到PB9,SCL接到PB8。TCS3472模块的LED引脚接PA3(