IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 华大单片机驱动库文件编译出错问题说明以及有硬件浮点运算单元的MCU的keil工程配置参数 -> 正文阅读

[嵌入式]华大单片机驱动库文件编译出错问题说明以及有硬件浮点运算单元的MCU的keil工程配置参数

?????今天在华大的官网上下载了 H C 32 F 460 HC32F460 HC32F460系列的芯片的驱动文件,如图1所示,然后用该驱动库文件新建完工程之后,编译有错误,错误如图2所示。这里主要都是图2中红圈中的错误,当然也有一些警告信息。这里的错误的大意就是变量的定义和声明不能位于执行语句的后面。但是我打开下载的驱动文件中华大官方自己的例子工程之后就就没有这种报错,也没有任何警告。

 
图1.
 
图2.

?????最后我把我的 k e i l keil keil工程的 O p t i o n s f o r T a r g e t Options\quad for \quad Target OptionsforTarget选项框里面的参数和官方的例子的相应参数做了对比之后,我发现了原因如图3所示。我这里出现如2中红圈中的错误时因为没有勾选 C 99 M o d e C99\quad Mode C99Mode选项。C99是一个在1999年建立的 C C C语言标准,这里如果没有勾选 C 99 M o d e C99\quad Mode C99Mode选项话,那编译器在编译的时候可能就是按照新的 C C C语言标准去编译的,这样也就说明了华大官方的这个驱动库文件不符合新的 C C C语言标准。官方的例子工程编译之后没有警告信息是因为它在 O p t i o n s f o r T a r g e t Options\quad for \quad Target OptionsforTarget选项框里面配置了编译器选项 ? ? d i a g _ s u p p r e s s = 186 , 66 --diag\_suppress=186,66 ??diag_suppress=186,66,如图3所示,这个编译器选项的意思就是屏蔽错误代码为十进制数186和66的警告,从图2中我们可以看到这里的警告信息的错误代码为66。关于具体的错误和警告信息对应的数字编码可以参考这里

 
图3.

?????还有就是我目前接触的通用 M C U MCU MCU型号不是很多,在上面的调试过程中我发现了一个以前在其它型号的芯片,比如 S T M 32 F 103 Z E T 6 , M 3 的 核 STM32F103ZET6,M3的核 STM32F103ZET6,M3,没有看到过的 K E I L KEIL KEIL软件里面的 O p t i o n s f o r T a r g e t Options\quad for \quad Target OptionsforTarget选项框里面的参数配置选项, F l o a t i n g P o i n t i n g H a r d w a r e Floating\quad Pointing\quad Hardware FloatingPointingHardware,如图4所示。这个参数配置选项只有在具有硬件浮点单元, F P U FPU FPU,的芯片里面才会有。你用 K E I L KEIL KEIL软件打开 H C 32 F 460 , M 4 的 核 HC32F460,M4的核 HC32F460,M4系列芯片的工程后,在如图4所示的位置就可以发现该选项,但是你用 K E I L KEIL KEIL软件打开 S T M 32 F 103 Z E T 6 , M 3 的 核 STM32F103ZET6,M3的核 STM32F103ZET6,M3的工程后就不会发现该选项。另外该选项是有下拉框的,下拉框的内容根据芯片的不同,下拉框的内容也会有所不同。总的来说就是,如果下拉框的内容是 N o t U s e d Not\quad Used NotUsed,就是告诉编译器不使用硬件浮点运算单元,如果程序代码中有浮点运算相关的运算的话会用软件去实现浮点运算,如果下拉框的内容不是 N o t U s e d Not\quad Used NotUsed而是其它选项,就是告诉编译器使用硬件浮点运算单元,如果程序代码中有浮点运算相关的运算的话会,编译器生成的代码中会包含了硬件浮点运算单元的指令,此时一般需要通过内核的 S C B SCB SCB模块的 C P A C R CPACR CPACR寄存器来开启硬件浮点单元。

?????另外还要重点强调一下,对于以下三个选项的不同配置组合程序表现的情况会不同,有的配置下有可能会进入 H a r d F a u l t H a n d l e r HardFault\quad Handler HardFaultHandler,这里也算是一个很多人遇到的坑,我这里也没有完全理清它们之间的关系。你们可以看看这篇文章:STM32F4之FPU与float类型导致的HardFault调试记录

  • 勾选或不勾选 U s e M i c r o L I B Use\quad MicroLIB UseMicroLIB
  • F l o a t i n g P o i n t i n g H a r d w a r e Floating\quad Pointing\quad Hardware FloatingPointingHardware的下拉框配置为不同的值。
  • S C B SCB SCB模块的 C P A C R CPACR CPACR寄存器是否有被配置为开启硬件浮点单元。
 
图4.
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-12-03 13:11:47  更:2021-12-03 13:12:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 1:26:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码