硬石开发板STM32F407IGT6 (HAL库)学习笔记

硬石开发板STM32F407IGT6 (HAL库)学习笔记

    • **2020-06-21**
    • **2020-06-22**
    • **2020-06-23**
    • **2020-06-24**

该笔记为学习时遇到的问题与解决方法等内容的记录,可能有错,仅供大家参考。

2020-06-21

Question 1:
在子程序中进行编译时,总对uint8_t报错:未定义(实际上在stdint.h中有定义,并可以通过头文件进行调用),而在其他子程序中不进行报错。
Answer 1:
经过资料查找,从以下内容得到解决方案:
Although the StellarisWare API has migrated to TivaWare, this data type change has several consequences that require existing applications to be reworked if they previously used StellarisWare APIs and are now to be used with TivaWare. First, C99 types are not compiler-intrinsic; instead, these types are defined via standard C runtime headers: stdint.h for basic types and stdbool.h for the bool Boolean type. Both StellarisWare and TivaWare headers have a policy of not nesting other headers, so these two standard headers must now be added to all source files that include any TivaWare header to ensure that the required basic data types are available.
#include
#include
(https://e2e.ti.com/support/tools/ccs/f/81/t/296169)
translation:
尽管StellarisWare API已迁移到TivaWare,但此数据类型更改会带来多种后果,如果以前使用StellarisWare API并现在与TivaWare一起使用的现有应用程序,则需要对其进行重新处理。 首先,C99类型不是编译器固有的; 而是通过标准C运行时标头定义这些类型:stdint.h用于基本类型,stdbool.h用于bool布尔类型。 StellarisWare和TivaWare标头都具有不嵌套其他标头的策略,因此,现在必须将这两个标准标头添加到包含任何TivaWare标头的所有源文件中,以确保所需的基本数据类型可用。
#include
#include
解决方案:
暂时并不太明白部分内容,总的来说,经过实验,将#include 头文件加入该子程序的定义头文件中即可。

2020-06-22

***Question 1:***在进行程序编写时,有时需要替换相关代码/文本等,一个个太麻烦,甚至太多时,甚至无法完全进行正确替换。
Answer 1: KEIL快速改变一个代码时,可用ctrl+f 实现。
ctrl+f
左上角选择Replace然后分别在find和Replace with栏输入原代码和新代码
然后点右下角Replace All
***Question 2:***在通过ST-Link进行程序下载时,当下载成功后开发板不会立刻出现现象。
***Answer 2:***关闭开发板电源,将其重启后即可。另:需要在开发板接通电源的情况下KEIL——DEBUG才能成功识别目标板
***Question 3:***外部中断触发处理函数不在main文件与外设(bsp)文件中。
***Answer 3:***中断处理的代码一般都放在stm32f4xx_it.c文件中。

2020-06-23

Question 1:
KEIL 找不到头文件。
***Answer 1:***可能有以下几种情况。

  1. 如果工程中有中文路径,keil是无法识别中文路径的,需要修改为英文路径。

  2. 如果工程中的路径存在数字开头,则keil无法识别该路径,需要修改为以英文字符开头。

  3. 如果修改了工程中的文件夹名,则需要重新将文件夹包含到工程中。

4)点击魔术棒中的C/C++,将包含该头文件的最内层文件夹包含进去,一定要包含最内层文件夹!!!
5)头文件名(xxx_H)一定要正确无误,不能有错!!!!!!!!!!!!!!!!!!!

2020-06-24

Question 1:
通过KEIL进行串口通信实验时,例程中的句柄结构体(UART_HandleTypeDef)总是报错未定义,经过屡次确认,包含了对应的stm32f4xx_hal_uart.c文件,并确认其中有UART_handleTypeDef定义。
Answer 1:
通过学习换用IAR软件重新进行编译,发现是UART_HandleTypeDef中的DMA_HandleTypeDef结构体未定义,此结构体定义在stm32f4xx_hal_dma,c文件中。将其添加进行工程即可。
Note 1:在keil编程中要注意将所需文件中所有涉及函数及相关定义的文件均放入工程不管实际有没有用到,不然都会报错。

你可能感兴趣的:(HAL库,stm32)