stm32
文章平均质量分 69
smt32系列教程
朽木白露
只有最不虔诚的信徒,才会追寻上帝存在的证明
展开
-
KEIL中启动文件详解(汇编语言)
原文在此:http://www.cnblogs.com/mddblog/p/4920063.html概述 在嵌入式系统中,启动文件是整个系统非常关键的部分,它会进行一些底层的初始化,构建程序运行必要的环境,比如堆栈初始化,变量初始化等。如果启动文件出现错误,则整个系统就跑不起来,因此研究启动文件非常必要。 在keil中,启动文件由汇编代码编写,一般命名为startup_xxx.s,xxx为支持的某种芯片,比如可以是lpc15xx(NXP的LPC15xx系列)、MK60D10(...转载 2021-10-30 13:39:20 · 2843 阅读 · 0 评论 -
STM32 进阶教程 11 - RAM中运行程序
转自:https://blog.csdn.net/zhanglifu3601881/article/details/95040782 前言 上一讲我们讲到stm32可以将代码直接下载到RAM中时行程序调试,同时可以有效避开STM32 Flash 擦写次数有限问题,其实除了仿真调试时将程序设置在RAM中可以解决FLASH擦写次数问题外,如果程序实际运行时能直接在RAM中运行,其代码的运行效率也会有一定的提高,那么怎么实现实际运行时让程序在RAM中运行呢,本节将带领大家来实现这一操作。 示例详解 基于硬转载 2021-10-30 12:33:18 · 4707 阅读 · 0 评论 -
IIC总线协议详解
转自:https://www.cnblogs.com/aaronLinux/p/6218660.html 1 I2C总线物理拓扑结构 I2C 总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。 I2C通信方式为半双工,只有一根SDA线,同一时间只可以单向通信,485也为半双工,S.转载 2021-08-14 13:10:02 · 549 阅读 · 0 评论 -
如何在KEIL中使用MicroLIB
MicroLIB 在keil 建立ARM的工程时其中有一项是选 use MicroLIB microlib 是缺省 C 库的备选库。 它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。 这些应用程序不在操作系统中运行。 microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。 某些库函数的运行速度也比较慢,例如,memcpy()。 与缺省 C 库之间的差异 microlib 与缺省 C 库之间的主要差异是: microl转载 2021-07-29 22:51:38 · 3259 阅读 · 1 评论 -
STM32半主机模式
参考资料:半主机模式和_MICROLIB 库 - jack_hzm - 博客园https://www.cnblogs.com/jack-hzm/p/11464816.htmlKEIL工具之半主机模式_记录人生-CSDN博客https://blog.csdn.net/xlhcgd/article/details/46505847STM32半主机模式_AndrewYZWang的博客-CSDN博客_半主机模式https://blog.csdn.net/andrewgithub/article/deta转载 2021-07-29 22:49:59 · 1174 阅读 · 0 评论 -
stm32 ADC 使用DMA双缓存
半缓存中断https://www.bilibili.com/read/cv5242250/https://www.cnblogs.com/armfly/p/12195631.html这个更详细DMAhttps://blog.csdn.net/qq_36075612/article/details/102953750原创 2021-07-04 18:01:43 · 1289 阅读 · 0 评论 -
Keil 编译内存信息:Program size: Code, RO-data , RW-data, ZI-data
转自:https://blog.csdn.net/qq_37858386/article/details/79541451一、用keil编译程序后会打印对应的内存分配信息,例如如Program Size: Code=97782 RO-data=9578 RW-data=2992 ZI-data=87696 ,如下图所示:二、这里我们就解释一下Program size: Code, RO-data , RW-data, ZI-data具体代表什么? 1、Code 是代码占用的空间。转载 2021-04-27 16:01:30 · 1483 阅读 · 0 评论 -
c宏定义
c 宏替换变量名一部分_简述C语言宏定义的使用_传播匠新传考研的博客-CSDN博客https://blog.csdn.net/weixin_32172693/article/details/112112579C语言宏定义中的字符串替换_binglingshuang的专栏-CSDN博客https://blog.csdn.net/binglingshuang/article/details/3401005...原创 2021-04-26 17:37:35 · 291 阅读 · 0 评论 -
如何在I2C通信中同时和多个从机通信
对于不同地址的模块就不用多说了,直接分别对其地址进行通信即可。那么若拿到相同地址的模块,或者直接是相同的多个模块怎么办呢?方法一:(内置了两种地址的模块)对于内置了两种地址的模块,可以通过对某个引脚置高或置低来选择其中一个地址,现假设置高为A,置低为B。假设你有三个模块要同时通信,首先将模块1置高,模块2、模块3的地址选择口置低,这样仅有模块1在地址A,然后对地址A进行通信即可防止其他模块干扰。接下来将模块1置低,模块2置高,即可对模块2通信。循环下去即可实现同时对三个模块通信。方法二:(具有使能端转载 2020-11-04 12:42:55 · 11754 阅读 · 1 评论 -
stm32cubemx使用mpu6050
文章目录接线图代码常见问题接线图一般情况下, 大家买的 mpu 6050 有两种。 1: 就是 单个的 mpu6050 芯片 2: 就是 mpu6050 模块如果 是第一种情况的话 , 大家可以参考 下图所示如果是第二种情况的话, 一般来说 ,只需要四根线就可以了,Vcc 接电源正极 (5V , 不过一般模块上都带有3.3V稳压芯片,即接3.3V也可以)。GND 接地, SCL,SDA 为iic, 其他的基本上不用接了。 XCL ,XDA 是辅助iic, 用来接其他的器件的。 AD0原创 2020-11-02 20:33:59 · 4517 阅读 · 0 评论 -
stm32cubemx扩展模拟iic函数
stm32cubemx实现模拟IIC https://blog.csdn.net/qq_45467083/article/details/109433847上面的代码只是iic的基础功能,这里增加了对一些地址读写寄存器的函数封装。#ifndef __IOI2C_H#define __IOI2C_H#include "main.h"typedef uint8_t u8;typedef uint32_t u32;#define SDA_GROUP GPIOB#define SDA_PIN原创 2020-11-02 20:17:04 · 1463 阅读 · 1 评论 -
stm32cubemx光环境传感器AP3216C使用
stm32cubemx实现模拟IIChttps://blog.csdn.net/qq_45467083/article/details/109433847感谢正点原子的开源支持,下面AP3216的驱动代码来自正点原子。本实验使用模拟iic驱动AP3216C,不使用INT引脚。如果需要接收AP3216C中断,可以通过配置一个io输入中断进行处理。//ap3216c.h#ifndef __AP3216C_H#define __AP3216C_H#include "main.h"typede原创 2020-11-02 14:38:05 · 2572 阅读 · 2 评论 -
stm32cubemx使用AHT10
关于模拟iic的代码参考:https://blog.csdn.net/qq_45467083/article/details/109433847下面给出AHT10的代码:#ifndef _AHT10_H__#define _AHT10_H__//转自:https://blog.csdn.net/Dinvent/article/details/105953462#include "main.h"typedef uint8_t u8;typedef uint32_t u32;#define原创 2020-11-01 19:24:00 · 1448 阅读 · 0 评论 -
stm32cubemx读写SDRAM-W9825G6KH
转自:https://blog.csdn.net/mculover666/article/details/108221735 本篇详细的记录了如何使用STM32CubeMX配置 STM32F767IGT6 的硬件FMC外设与 SDRAM 通信(W9825G6KH)。 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是STM32F767IGT6的核心板。 SDRAM 核心板板载一片SDRAM,型号为 W9825G6KH,大小为 32 MB。 软件准备 需要准备一份转载 2020-11-01 14:17:43 · 10338 阅读 · 3 评论 -
__weak 关键字的作用
在使用STM32的hal库的时候,我们常常可以看到很多库自带的函数有很多是使用__weak修饰的,比如:这个修饰符的作用是什么呢?函数名称前面加上__weak 修饰符,我们一般称这个函数为“弱函数”。加上了__weak 修饰符的函数,用户可以在用户文件中重新定义一个同名函数,最终编译器编译的时候,会选择用户定义的函数,如果用户没有重新定义这个函数,那么编译器就会执行__weak 声明的函数,并且编译器不会报错。所以我们可以在别的地方定义一个相同名字的函数,而不必也尽量不要修改之前的函数,。转自:h转载 2020-10-30 13:23:35 · 420 阅读 · 0 评论 -
硬件I2C读写AT24C02(EEPROM)
网上有流传已久一种说法,就是STM的I2C有bug,不好用。确实很多人在实际应用中都遇到了各种问题,所以绝大部分人都是在用软件模拟IIC。 有了STM32CubeMX,我们可以尝试使用硬件I2C了,官方的优化总不会有错了吧?(其实还是有个小bug,不过可以改过来的)。本文的目标就是使用STM32CubeMX的硬件I2C对麒麟座板载的AT24C02 EEPROM进行完整的读写操作。 软件版本: STM32CubeMX V4.25.0 System Workbench V2.4 固件库版本:转载 2020-10-28 12:22:07 · 2621 阅读 · 0 评论 -
利用.bat文件清除Keil编译生成的无用文件
前言:相信大家在用keil进行开发项目时,会发现keil编译时会生成一大堆无用的文件,使得编译后的整个工程项目占用的空间会很大,例如: 编译前: 编译后: 运行.bat文件后: 好吧,我们一起来看下.bat文件的内容吧 del *.bak /s del *.ddk /s del *.edk /s del *.lst /s del *.lnp /s del *.mpf /s del *.mpj /s del *.obj /s del *.omf /s .转载 2020-09-30 12:53:58 · 1344 阅读 · 0 评论 -
STM32 HAL库 CUBEMX FPU 和 DSP库
转自:https://blog.csdn.net/yuleitao/article/details/105621492?ivk_sa=1024320uFPU 简介 FPU 即浮点运算单元(Float Point Unit)。浮点运算,对于定点 CPU(没有 FPU 的 CPU)来说必须要按照IEEE-754 标准的算法来完成运算,是相当耗费时间的。而对于有 FPU 的 CPU来说,浮点运算则只是几条指令的事情,速度相当快。STM32F4 属于 Cortex M4F 架构,带有 32 位单精度硬件转载 2020-09-28 10:23:34 · 6135 阅读 · 4 评论 -
stm32cubemx配置编码器
首先打开timer2的encoder模式:配置系统时钟。配置具体定时器的参数:选择的encoderMode是 TI1和TI2模式。这种模式下,AB两相的上升沿和下降沿都会计数,所以计数值是实际值的4倍,需要做分频。也就是第一个参数,分频值设为3,实际上是3+1=4分频。还有个地方需要解释一下,我刚开始的时候就是把这里的设置没搞清楚,看Polarity参数设置的是Rising Edge。这个参数的意思是在检测到上升沿的时候就触发encoder捕获AB相的值,而并不是这里设置的是上升沿就只检测AB转载 2020-09-10 12:05:25 · 8269 阅读 · 2 评论 -
stm32配置SPI(读取ICM20602陀螺仪数据)
1、和前面一样配置一个C8T6的工程,然后开启SPI,配置成全双工模式,然后这里注意SPI通讯速率,这个陀螺仪最大是10MHz,然后这个SPI2挂在36MHz的时钟上,所以设置4分频,时钟变成了9MHz,在这个陀螺仪接受范围内。SPI2使用的时钟:可以适当修改这里的频率从而得到合适的SPI速率2、配置片选引脚,这个模块上集成了3个传感器,这里用普通IO配置他们的片选引脚记住修改PIN_LABEL,便于后期识别3、生成代码,添加陀螺仪通讯协议在HAL库里面SPI接口发送和接收数据主要调用以转载 2020-09-10 11:42:38 · 4952 阅读 · 0 评论 -
stm32cubemx配置PWM
STM32F4定时器时钟频率和时钟源(1)高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11的时钟来源是APB2总线(2)通用定时器timer2timer5,通用定时器timer12timer14以及基本定时器timer6,timer7的时钟来源是APB1总线cubemx配置以下转自:https://blog.csdn.net/qq_42967008/article/details/89267010一、打开Cube,建立工程图片:点击ACCE转载 2020-09-10 11:21:18 · 8034 阅读 · 7 评论 -
stm32cubeMX配置串口
第一步 使用stm32cubeMX配置串口可以在NVIC里面设置串口的优先级,避免bug的出现。第二步 生成代码并修改串口打印重定向在usart.c里面添加/** * @brief 串口重定向 */#include <stdio.h>int fputc(int ch, FILE *f){ HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF); return ch;}在使用的地方要原创 2020-08-28 14:01:42 · 2383 阅读 · 1 评论 -
cubemx实现定时器中断
软件:STM32CubeMX V4.25.0 System Workbench V2.4固件库版本:STM32Cube FW_F1 V1.6.1硬件:OneNet 麒麟座V2.3在STM32CubeMX中新建项目,选择正确的MCU型号 首先设置RCC和SYS,如下图 启用TIM1,选择内部时钟源(Internal Clock)。...原创 2020-01-07 22:07:21 · 2352 阅读 · 0 评论 -
ST-LINK JLINK JTAG SWD接线图
转载 2020-01-04 21:35:53 · 4329 阅读 · 0 评论 -
STM32 CubeMx使用教程一--安装教程
一、STM32CubeMX 简介 1、STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列...转载 2020-01-04 18:37:16 · 1226 阅读 · 0 评论 -
stm32cubeMX生成工程文件
配置管脚结束后,点击projects-settings,在新版本的软件中可能不是这样,但无论如何都是寻找生成代码的设置部分。打开如下,按照需要设置。如何点击projects-generate code。在新版本的软件中可能不是这样,但无论如何都是寻找generate code(生成代码)的按键入口。生成代码后打开工程,用户代码必须写在user xxx begin到user xxx e...原创 2019-12-13 13:59:56 · 2817 阅读 · 0 评论 -
STM32 HAL库 HAL_Delay配置为微秒级
参考博客:https://blog.csdn.net/qq_34752070/article/details/82620374// HAL_RCC_GetHCLKFreq()/1000 1ms中断一次,即HAL_Delay函数延时基准为1ms// HAL_RCC_GetHCLKFreq()/100000 10us中断一次,即HAL_Delay函数延时基准为10us// HAL_RCC_Ge...原创 2019-11-30 15:50:38 · 5940 阅读 · 1 评论