ARM 处理器并不支持浮点运算 (Floating Point Math)。所有的浮点运算都是在浮点运算模拟器上进行,因此特别缓慢。需要浮点运算的函式,常要耗费数千个循环才能执行完毕。这就是为何游戏开发时,通常都使用定点 (Fixed Point) 格式的运算。定点运算实际上是使用整数,但指定固定数目的位元做為数值的分数部份。就好像是指定某一数
转载
2024-07-25 16:17:21
131阅读
stm32之间直接传送浮点数的实现方法指针变换小端模式字节流发送端接收端 指针变换一个变量,如果长度大于一个字节,就可以拆分为多个字节;同时,也可由多个字节合成一个变量。数据传输过程一般就是采用发送端拆分,接收端合成。其中指针变换语句是核心:int x;
x=*((int*)&x);其中x=指向该地址((强制指针类型转换)取地址); 该表达式可以将任意地址的几个字节“识别”为某一个类型
转载
2024-04-11 12:47:32
915阅读
目录背景说在前面工作流程寄存器介绍ADC寄存器ADC->CR2DMA寄存器DMA2_Stream0 ->CR程序TIM3ADC1DMA开启顺序尾声 背景有一次我想在407上跑4096点的FFT,如果用软件触发ADC的方式(最简单)思路就是开定时器,在定时器中断中开触发,但是经过测试,实际效果的话,低速的情况下,准度还可以,但是速率一旦上去,如500K后,效果非常差。后来看了网上以及4
转载
2024-10-08 07:14:51
133阅读
文章目录一.ADC简介二.ADC功能框图讲解1.电压输入范围2.输入通道3.转换顺序4.触发源5.转换时间6.数据寄存器7.中断8.电压转换三.初始化结构体四.单通道电压采集1.头文件2.引脚配置函数3.NVIC配置函数4.ADC配置函数5.中断函数6.主函数一.ADC简介STM32f103系列有3个ADC,精度为12位,每个ADC最多有16个外部通道。其中ADC1和ADC2都有16个外部通道,A
前些天理解了fft变换的理论和对其工程应用进行了实例分析,详见我的名为《C语言实现fft理论基础与工程应用的实例分析》的博客,用C语言编写的fft算法比较容易看懂,但带来的缺点就是执行效率低,对于要求实时操作(例如电机控制)的反应速度不够灵敏。本篇内容将简要分析STM32自带的DSP库文件,其用汇编语言编写,代码执行效率明显优于C语言,ST公司封装好了了库文件,我们不必看懂其汇编代码,只要会调用
引言笔者接触嵌入式领域软件开发以来,几乎用的都是 ARM Cortex-M 内核系列的微控制器。感谢C语言编译器的存在,让我不用接触汇编即可进行开发,但是彷佛也错过了一些风景,没有领域到编译器之美和CPU之美,所以决定周末无聊的休息时间通过寻找资料、动手实验、得出结论的方法来探索 ARM CPU 架构的美妙,以及C语言编译器的奥秘。(因为我个人实在是不赞同学校中微机原理类课程的教学方法)。一、浮点
1.明确三个步骤板子采用的是stm32最小系统板stm32f103c8t6,根据原理图得知C13管脚低电平点亮led寄存器点灯需要以下3步:1.查看stm32f103ct86中文手册,可以得知要配置通道APB2上的GPIOC时钟,操作如下:第一步: 找总线AHB外设使能时钟寄存器的地址,复制起始地址,左边是起始地址,右边是终止地址第二步:找APB2外设使能时钟寄存器的偏移地址,复制偏移地址,加上面
转载
2024-09-29 18:20:32
392阅读
一、STM32F103知识总结-GPIO1.GPIO的工作方式:2.GPIO的相关函数:3.GPIO的初始化:4.GPIO设置:(1).GPIO置0,置1:(2).读GPIO电平/数据: 1.GPIO的工作方式:GPIO支持4种输入模式(浮空输入、上拉输入、下拉输入、模拟输入)和4种输出模式(开漏输出、开漏复用输出、推挽输出、推挽复用输出)。同时,GPIO还支持三种最大翻转速度(2MHz、10M
转载
2024-03-02 09:06:35
264阅读
GPIO是芯片和外界沟通的桥梁,GPIO有很多模式,不同的模式有不同的配置,应用于不同的场合。STM32F103系列的I/O引脚共有8种工作模式,输入模式有四种浮空输入上拉输入下拉输入模拟输入其中输出模式有四种:推挽输出开漏输出复用推挽输出复用开漏输出通过百问网对STM32F103GPIO部分的学习,这部分又深入了一些。浮空输入浮空输入是 STM32 复位之后 默认模式。浮空输入模式是相对于上拉或
转载
2024-06-06 16:45:32
143阅读
浮点数和定点数的关系理解一直以来,程序中接触的数据类型都是int整型,char字符型,float单精度浮点型,double双精度浮点型。看到浮点和定点一直不知道如何划分这个概念的范畴。以为浮点就是float表示小数,定点就是int可表示整数而已。经过学习明白了显然是错误的。应该是这样划分的:浮点:小数点非固定的数,可表示数据范围较广,整数,小数都可表示。包含float,double;定点:小数点固
转载
2024-09-03 19:34:45
242阅读
对程序员来说,用来表示小数的浮点类型是最常接触到的基础数据类型之一。它包括单精浮点数(float,4字节)和双精浮点数(double,8字节)两种。但为何称表示小数的数据类型为浮点类型呢?顾名思义,所谓浮点即指小数中的小数点是可浮动的,但它是如何浮动的呢?能不能不浮动? 其实,计算机中表示小数的数据类型可以分为定点数和浮点数两种。只是因为定点数表示小数
转载
2024-09-13 20:43:53
486阅读
1.ADC采用值转换成具体的物理量值ADC采样值在寄存器中是16位整形数据,要转换成具体的电压量,则必须进行换算。例如12位的转换精度,满量程的二进制为0000 1111 1111 1111,对应十进制数为1095,对应的电压为3.3V。所以计算公式为 &n
转载
2024-06-13 17:41:59
472阅读
原标题:STM32H7榨干了Cortex-M7的最后一滴血有个非常重磅的消息ST给自己的STM32家族又新增了一条新的产品线—— H7H 代表的是High Pefrmance之意 (此为笔者臆测)7 则表示这是基于ARM Cortex-M7架构修改而来熟悉的工程师可能会问,不是已经有基于M7架构的STM32F7了吗?那H7到底有何不同?其实H7是比F7更高性能的代表, 是STM32产品中的全新旗舰
目录一:输入模式1.1:模拟输入1.2: 浮空输入 1.3:上拉输入 1.4:下拉输入1.5: 为什么没有复用输入配置模式 二:输出模式2.1:推挽输出2.2:开漏输出 2.3:复用推挽输出2.4:复用开漏输出 一:输入模式1.1:模拟输入模拟输入(GPIO_Mode_AIN):这种输入方式和浮空输入非常相似,都不接入内部的上拉和下拉电阻,它们二者
转载
2024-03-26 23:21:19
602阅读
1. 浮点数原理简介1.1 IEEE浮点表示IEEE浮点标准用V=(-1)^s * M * 2^E的形式来表示一个数:符号(sign) s是符号位,1表示负,0表示正阶码(exponent) E的作用是对浮点数加权,这个权重是2的E次幂,取值范围(单精度-128~127,双精度-1024~1023)尾数(signifi
转载
2024-03-04 11:17:18
1773阅读
以下只是个人学习的要点和个人观点,若整理的知识要点有问题,可以提出来,一起学习进步,嘻嘻嘻。 自毕业一年以后,我和我的一位学长住在了一起,最近和他探讨学习中,我被他喷的一无是处,作为一个嵌入式开发工程师,我的底子太薄了,所以我要重新学习单片机。 &nbs
转载
2024-07-09 06:30:52
345阅读
STM32F407 DSP+FPU进行FFT变换接着上一篇继续,要用FFT运算的话,F4有FPU和DSP库,可以很方便让我们去对数据进行傅氏变换。首先得配置好DSP库和FPU。配置DPS库和FPUCubeMX一般是默认配置开启FPU,但是DSP库需要自己去添加。这里添加方法可能不适用所有人。FPU开启:点仙女棒 ,然后可以看到 然后选择Single Precision,就开启了FPU。添加DSP库
转载
2024-10-09 11:45:03
945阅读
发现问题项目开发过程中,中断中要计算几个浮点数,仿真时发现浮点数经常性计算错误:计算结果不可能是负值,但却会计算出负值,而且与真实结果完全没有关联性.当时单片机使用的是STM32F429ZGT6,主频设置为192MHz,运行RTOS,开了十个定时器中断.以及几个外部中断可能的原因因为执行的函数是在中断中,而且这个函数还挺长,两三百行,所以想到是有可能进中断次数太多,导致栈溢出.将栈调大至0x100
转载
2024-04-10 11:45:11
1147阅读
浮点运算一直是定点CPU的难题,比如一个简单的1.1+1.1,定点CPU必须要按照IEEE-754标准的算法来完成运算,效率低下。虽然对32为单片机来说,将浮点数进行Q化处理能充分发挥32位单片机的运算性能,但是精度会受到限制。而对于有FPU(浮点运算单元)的单片机来说,浮点加法只是几条指令的事情。 STM32F4xx属于Cortex M4F架构,这和M0、M3的最大不同就是多了一个F-fl
转载
2024-05-28 22:33:49
2730阅读
以下是从嵌入式系统设计的角度,对ATmega328P、STM32F103C8T6、和nRF52832三款微控制器的比较。这份比较覆盖了核心性能参数、外设功能、封装尺寸等,特性 / 参数ATmega328PSTM32F103C8T6nRF52832核心AVR 8位ARM Cortex-M3 32位ARM Cortex-M4F 32位最大时钟频率20 MHz72 MHz64 MHz程序存储空间32KB
转载
2024-07-25 10:00:53
243阅读