【天气时钟】第一课:工程模板的搭建

目录

一、文件管理

1.创建文件夹进行管理

2.在Keil中进行分组管理

3.添加头文件路径

二、学会移植------firmware文件夹中的文件来历

[1.前往ST官网下载stm32f4 stdlib​编辑](#1.前往ST官网下载stm32f4 stdlib编辑)

2.cmsis母文件夹下(芯片内核文件夹)

1)core子文件夹中文件的来历

2)device子文件夹中文件的来历(需要从多个文件夹中拷贝)​编辑​编辑

3)移植结果

3.driver母文件夹下(芯片外设文件夹)

1)头文件和源文件​编辑

2)移植结果

4.创建工程需要注意的事项

三、编译报错与警告的解决


一、文件管理

1.创建文件夹进行管理

  • app:存放用户代码,项目功能代码,main.c一般存放在这里
  • driver:外设驱动文件,比如led/key/lcd等驱动代码
  • firmware:芯片固件文件,从官方SDK里面复制出来的工程文件
  • ------cmsis:ARM公司强制标准文件,所有ARM内核芯片都遵循CMSIS标准
  • ------------core
  • ------------device
  • ------driver:芯片外设驱动文件,比如stm32f4xx_gpio.c/.h文件存放在这里
  • mdk:存放keil工程文件
  • third_lib:三方组件库,里面存放freertos/lvgl/shell/logger等组件的源码

2.在Keil中进行分组管理

点击三个小方块图标进行分组,分组不一定要和真实的文件夹保持一一对应的关系

3.添加头文件路径

点击魔法棒,将所有头文件的路径添加进来

二、学会移植------firmware文件夹中的文件来历

1.前往ST官网下载stm32f4 stdlib

2.cmsis母文件夹下(芯片内核文件夹)

1)core子文件夹中文件的来历

2)device子文件夹中文件的来历(需要从多个文件夹中拷贝)

3)移植结果

3.driver母文件夹下(芯片外设文件夹)

1)头文件和源文件

2)移植结果

4.创建工程需要注意的事项

  1. 创建的文件夹内有具体的各文件
  2. 在keil中再次创建组件(建议将名称与使用到的文件夹的名称相同)并添加文件。包括芯片汇编相关的md.s文件,内核相关的cm3.c和cm4.h文件,芯片相关的.h文件,芯片系统相关的.c和.h文件,工程库相关的conf.h文件,中断相关的it.h文件
  3. 添加文件路径
  4. 如有需要则补充宏定义,多个宏定义用逗号隔开
  5. 修改时钟(简记,目前还不清楚不修改的后果):因为官方F4例程使用的是25M的频率,国内买到的板子大多实际频率是8M,找到宏定义,在宏定义处进行修改,同时修改PLL_M的值

三、编译报错与警告的解决

1.warning: #47-D: incompatible redefinition of macro "DBGMCU_APB2_FZ_DBG_TIM1_STOP" (declared at line 11574)

先将文件只读属性取消,再将重复定义的部分注释掉

2.error: #20: identifier "FMC_Bank1" is undefined

f407本身没有FMC,所以可以直接将FMC.c文件删除

3.Error: L6218E: Undefined symbol assert_param (referred from misc.o).

加入宏定义

四、其他注意事项

1.对于多个宏定义用逗号分开

2.修改时钟(简记,目前还不清楚不修改的后果):因为官方F4例程使用的是25M的频率,国内买到的板子大多实际频率是8M,找到宏定义,在宏定义处声明时钟频率,修改文件属性后修改PLL_M的值也为8M

相关推荐
fie888918 小时前
基于51单片机的航模遥控器6通道接收机程序
单片机·嵌入式硬件·51单片机
bu_shuo19 小时前
嵌入式硬件工程师VS单板硬件工程师
嵌入式硬件·电子工程师·单板硬件
llilian_1619 小时前
选择北斗导航卫星信号模拟器注意事项总结 北斗导航卫星模拟器 北斗导航信号模拟器
功能测试·单片机·嵌入式硬件·测试工具·51单片机·硬件工程
Yyq1302086968219 小时前
MH2457,‌国产 32 位屏驱 MCU‌芯片,支持‌1080P 高清显示‌与‌以太网通信‌,广泛应用于两轮车仪表盘及工控屏等领域
单片机·嵌入式硬件
爱吃程序猿的喵20 小时前
南邮计科电工电子实验B《RLC串联谐振电路》实验报告
单片机·嵌入式硬件
独小乐20 小时前
009.中断实践之实现按键测试|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·驱动开发·笔记·嵌入式硬件·arm
XINVRY-FPGA20 小时前
XC7VX690T-2FFG1157I Xilinx AMD Virtex-7 FPGA
arm开发·人工智能·嵌入式硬件·深度学习·fpga开发·硬件工程·fpga
bubiyoushang8881 天前
利用STM32实现Modbus通信(RTU从机方案)
stm32·单片机·嵌入式硬件
cmpxr_1 天前
【单片机】常用设计模式
单片机·嵌入式硬件·设计模式
杰杰桀桀桀1 天前
4*4无时延矩阵键盘(非阻塞)--附代码链接
stm32·单片机·嵌入式硬件·矩阵·计算机外设·无时延矩阵键盘