如何使用MMU隔离地址空间划分空间在32位ARM架构下,我们可用使用的地址空间为4G(0x0000 0000 ~ 0xFFFF FFFF ),也就是我们能操作的地址空间范围,但是这只是我们软件上的可操作范围。 实际上我们的物理内存可能低于4G或者超过4G,超过4G空间我们就需要用64位的ARM,64位的ARM理论上是没有物理内存范围限制的。 还有就是你所选的ARM,他具体支持多大的物理内存,不是所
SSE2与SSE1使用相同寄存器,指令描述约定:  MM指64位MMX寄存器 XMM指128XMM寄存器m32 指32位内存变量 m128指128位内存变量 本小结主要描述双精度浮点运算指令 1.  数据搬移指令movapd XMM,XMM/m128movapd XMM/m128,XMM         &
转载 2024-10-16 21:26:40
44阅读
FreeRTOS的中断配置是一个很重要的内容,需要根据所使用的MCU来具体配置重点:不同的MCU所在FreeRTOS的配置是不一样的,当你使用了其他芯片,配置就有所不同了,不要固定思维。 ---- 你需要理解你所使用的MCU的中断资源 M3-内部的有些中断具有固定的优先级 编程习惯---在数字前面加数据类型,比如寄存器32位,我们对它进行赋值,按理说是0X700,忽略了前面的很
硬件资源越来越庞大和复杂,内核的另一个挑战就是要便捷的管理这些资源。同时,面对如此之多的平台不同的CPU,管理机制需要统一适用,这就需要对资源的管理抽象到更加通用的层次。CPU中各个模块都需要时钟驱动,内核需要一种机制能通用所有的平台,方便的管理CPU上所有的clk资源。这里分析Linux对clk的管理。 Linux version: 2.6.38 平台: i.mx53 (mxc
浮点数的表示和运算标题浮点数的表示浮点数的加法和减法运算 通过学习了计算机系统的相关知识,我对浮点数的表示和算法部分格外关注,总结了一点知识点在这里。标题浮点数的表示在现代计算机中,为了便于软件移植,一般均采用 IEEE 754标准来表示浮点数。在介绍IEEE 754标准前,有必要先介绍一下浮 点数的表示形式。既然尾数和阶码分别是定点小数和定点整数,即尾数和阶码都是有符号位的,那么就可以写出浮点
STM32CUBEMX--外部中断概述硬件准备选择芯片型号配置时钟源配置时钟树中断口配置GPIO配置生成工程设置生成代码配置keil设置IO口模式,触发条件,设置 IO 口与中断线的映射关系配置中断优先级(NVIC),并使能中断中断服务函数EXTI4_15_IRQHandlerHAL_GPIO_EXTI_Callback代码演示效果最后 概述外部中断和事件控制器 (EXTI) 管理外部和内部异步
转载 2024-07-09 18:08:25
126阅读
#include "include.h" /*------------------pwm功能初始化-------------------*/ void PWM_GO(void) { PWMCFG &= 0xBF; //将CBTADC位置0,即PWM计数器归零时不触发ADC转换 PWMIF &= 0xBF;
系统环境硬件:    MCU:STM32F405RGT6    IMU:MPU6050软件:    开发环境:KEIL MDK-ARM uVision5    MPU6050使用DMP复现步骤程序中MPU6050 DMP的采样率设置为100Hz,使用中断引脚接到STM32单片机的GPIO引脚,此引脚通过Cube MX配
因为项目的需求,需要将F103上的程序移植到F407上,用了一天研究了一下也移植成功了! 我的思路是找一个F4的例程,然后将其HARDWARE文件夹里的文件全部替换成原本F103的HARDWARE文件夹里的,将原来的main.c文件也替换成原F103的,然后把头文件都改成对应正确的,接着编译,报错什么修改什么。1.部分外设及GPIO口对应的时钟改变因此各GPIO的时钟使能函数和时钟名称均发生改变2
通过定时器3,定时20ms,进行kalman滤波,读取角度。利用串口助手,发送角度到用软件iic,pg5,pg6,两个IO口模拟IIC,,代码主要有四个。mpuiic.h#ifndef __MPUIIC_H#define __MPUIIC_H#include "sys.h"//正点原子MPU6050通讯线驱动 //IO方向设置//#define MPU_SDA_IN() {GPIOG->CRL&=0X0FFFFFFF;GPIOG->CRL|=
原创 2021-08-31 17:08:18
615阅读
一、什么是缓冲区     一个缓冲区对象是固定数量的数据的容器,其作用是一个存储器,或者分段运输区,在这里数据可被存储并在之后用于检索。缓冲区像前篇文章讨论的那样被写满和释放,对于每个非布尔原始数据类型都有一个缓冲区类,尽管缓冲区作用于它们存储的原始数据类型,但缓冲区十分倾向于处理字节,非字节缓冲区可以在后台执行从字节或到字节的转换,这取决于缓冲区是如何创建
LwIP 介绍LwIP 全名:Light weight IP,意思是轻量化的 TCP/IP 协议LwIP 的设计初衷是:用少量的资源消耗实现一个较为完整的 TCP/IP 协议栈,其中“完整”主要指的是 TCP 协议的完整性,实现的重点是在保持 TCP 协议主要功能的基础上减少对 RAM 的占用。此外 LwIP 既可以移植到操作系统上运行,也可以在无操作系统的情况下独立运行。LwIP 的代码已经交给
转载 2024-10-28 18:30:13
183阅读
但是串口下载比较慢,如果给stm32F103下载是比较快的。后者是做其他没有那么复杂的项目比如大创、电赛、机器人大赛等使用
原创 2024-07-01 14:52:03
162阅读
简介MLX90614 是一款红外非接触温度计。TO-39 金属封装里同时集成了红外感应热电堆探测器芯片和信号处理专用集成芯片。由于集成了低噪声放大器、17 位模数转换器和强大的数字信号处理单元,使得高精度和高分辨度的温度计得以实现。温度计具备出厂校准化,有数字 PWM 和 SMBus(系统管理总线)输出模式。作为标准,配置为 10 位的 PWM 输出格式用于连续传送温度范围为-20…120 ˚C
转载 10月前
117阅读
一.串口理论串口作为MCU的重要外部接口,同时也是软件开发重要的调试手段,其重要性不言而喻。现在基本上所有的MCU都会带有串口,STM32自然也不例外。STM32F407VGT6内嵌四个通用同步/异步接收器(USART1,USART2,USART3和USART6)和两个通用异步收发器(UART4和UART5),如图:另外,usart和uart的差异在于usart是同步串口(亦可用于异步串口),ua
   通常大家都说keil的纯软件仿真功能无比的强大,它到底强大到哪种程度呢?简单地来说,它能够仿真到几乎所有的内部资源及外围的IO口。  如上图所示,几乎所有的IO口、串口、I2C、SPI、AD等,都能够仿真。呵呵,够强大了吧?下面以外围IO口的流水灯仿真及AD转换为例,来慢慢说明。大家可以下载下面这个软件包进行结合我的例子同步:  &
转载 6月前
0阅读
key.c/**/* 包含头文件 ----------------------------------------------------------------*/#include "key/bsp_key.h"/* 私有类型定义 --------------------------------------------------------------*//* 私有宏定义 -------------------------------------------------------...
原创 2021-09-01 09:49:36
103阅读
TM7705、TM7707的硬件电路      TM7705和TM7707的是PIN对PIN(管脚)兼容的,因此在硬件电路上完全兼容。       外围电路中,TM7705和TM7707内部没有振荡器和基准电压,需要外接晶振电路和基准电路,一般接1M或者2.4576M晶振;基准电压范围为GND~VDD,一般推荐1/2的VDD, 基准电压是
工程下载链接工程下载前言在学习STM32时,跟着教程学标准库都是用Keil软件开发,HAL库配套的例程也是Keil开发的, 同时发现配套例程的HAL库程序的硬件配置代码都是自己编写的,而在网上搜的HAL库程序都是用STM32CubeMX+Keil编写的,而这种方法极大的节省了硬件配置的时间,但是对于Keil的风格并不太满意,于是跟着网上的教程搭了CLion编写STM32程序的平台…正文首先打开LC
输出比较简介和特性-1-只有通用/高级定时器才能输出PWM-2-占空比就是高电平所占的比例-3-输出比较就是输出不同占空比的信号工作方式说明-1-1- PWM工作模式-1-2- 有效/无效电平有效电平可以设置为高或低电平,是自己配置的周期选择与计算周期=重装载 * 预分频值 / 时钟频率arr和psc是自己定义的 时钟频率可以查看时钟树,即下图中的84MHZF1和F4采用的时钟频率F1通过72MH
原创 精选 2023-11-24 08:24:12
761阅读
  • 1
  • 2
  • 3
  • 4
  • 5