标题: HC32F460 MCU开启FPU 附工程模板源程序@YUJINQU [打印本页]

作者: 余金渠    时间: 2022-3-20 16:51
标题: HC32F460 MCU开启FPU 附工程模板源程序@YUJINQU
我们知道在HC32F460系列芯片当中有FPU这个内核模块但应用手册当中并没有写出如何打开这个功能。
可能很多初学者用不到FPU 但多学总没有坏处。FPU是专门用于浮点计算的单元根据IEEE的浮点标准
原本通用CPU需要3~4个周期的计算时间现在只需要一个FPU指令就行。在触摸屏,数学函数运算时特别有用。

ok首先我们必须添加arm_math.h这个官方数学库,如果系统提示没有该文件那你必须安装CMSIS这个PACK。
这个CMSIS PACK里面有非常多ARM库,比如DSP这个库就在其中。因为华大半导体并没有为自己的芯片提供DSP库
所以我们也只能用CMSIS(ST就自己优化过的DSP库)并且我们不用担心法律问题Arm根据Apache 2.0许可免费提供CMSIS 。
接下来是要添加几个全局宏定义主要是为了打开预编译

__TARGET_FPU_VFP,__FPU_PRESENT,ARM_MATH_CM4
前面的两个宏是关于FPU开启的后面是官方math库开启的,在打开编译FPU开关其实没有必要不过还是打开以防万一。

之后再在 system_hc32f460kcta.c 的系统初始化函数 SystemInit 添加这段代码.
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
    SCB->CPACR |= ((3UL << 20) | (3UL << 22)); /* set CP10 and CP11 Full Access */
#endif

int32_t main(void)
{
    float D = 0.000001;
        float C = 0;
    while(1)
    {        
        C = D+C;                        
    };
}
接下来插上仿真器开始调试,这是反汇编的结果明显调用了FPU指令

并且FPU模块也被塞满了数据。
下面是C的值。

ok实验已经完成,细心的可能已经发现了这和STM32的开启过程一样为什么你还要写?其实内核的东西差不了多少
只是在某平台的作者也写了关于HC32打开FPU的话题但竟然要你开VIP才能看我相信我们的坛友也不想花这个冤枉钱,
于是乎就有了这篇文章。大家可以加我的QQ群375029515一起讨论关于嵌入式的话题。
下期我们使用HC32F460的ADC功能写一个K型热电偶的温度采集,讨论什么是冷端补偿和放大电路设计。
谢谢大家看到这里!!!


下面是工程模板:
HC32F460工程模板.zip (536.35 KB, 下载次数: 28)

作者: 余金渠    时间: 2022-3-20 17:15
本帖最后由 余金渠 于 2022-3-20 17:17 编辑

也是很无奈文本编辑不能直接贴图片必须上传图片但图片反而会被压缩大家将就看吧但看其他的贴子就是正常尺寸不知道为什么如果有人知道怎么弄麻烦回复一下。

作者: hondephy@126.co    时间: 2022-11-1 20:52
不错不错,有用的很呀。
作者: 尘世遗忘    时间: 2024-10-10 11:02

不错不错,有用的很呀




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1