STM32 CubeMX EWARM开发流程备忘录
硬件平台:启明欣欣STM32F407开发板V4.1 ST-LINK
软件平台:ST CubeMX V6.5.0 EWARM V7.20 STM32 ST-LINK Utility V4.20
软件安装过程省略
一、使用CubeMX生成工程代码框架
【1】打开CubeMX选择正确的器件型号,开发板用的是STM32F407ZGT6。
【2】配置STM32F407ZGT6芯片的设置
选择需要的组件并配置,因为只是演示开发流程,只用到UART5和3个LED灯,所以只需要配置下图红框的部分内容。
在System Core中先配置时钟源RCC
根据原理图,PH0和PH1连接了一个8MHz的无源晶振。
在RCC一栏按照下图配置,使能PH0和PH1的时钟输入。
在GPIO里设置用于控制LED的3个GPIO,在右侧芯片对应的pin上右键,在下拉菜单中选择GPIO output,然后在User Label中填入注释内容,这里使用LED0/LED1/LED2。注释的内容可以随便填,主要是为了方便分辨功能定义。
然后在SYS里的DEBUG一栏如下图选择,其实就算Disable也不影响仿真的功能,只是为了标注下Debug口,防止被错误占用。
接下来配置UART,主要是选好波特率等参数,并且绑定好UART占用的两个IO。
接下来在Clock Configuration页进行时钟树配置
STM32的时钟树非常复杂,很容易因为配错而导致芯片运行不正常。现在借助CubeMX可以很容易就完成时钟树的配置。
配置好8MHz的外部无源晶振频率
如下图做好选择
然后点击Resolve Clock Issues进行参数计算,下图是已经配置并计算好的,所以这个按钮变成了灰色。
在Project Manager页设置需要生成的工程代码框架的一些参数
生成代码的存放路径,
开发IDE工具,这里使用EWARM V7
至此,演示工程需要的配置就完成了,接下来就是点击Generate Code按钮进行代码生成。
二、修改IAR的配置以及CubeMX生成的代码
使用IAR(EWARM)打开CubeMX生成的工程
这时候,main()函数已经添加好芯片初始化函数。但是因为CubeMX的一个不算bug的bug,这时候直接编译是会报错的。
还需要对IAR以及代码做一些设置
(1)确认下编译器中的器件选择是否正确
上一步设置了正确的型号后,再编译还是会有一堆错误,大约如下图所示
问题出在 __RESTRICT这个宏定义上。在cmsis_iccarm.h中被定义。
需要将__restrict前面的两个下横杠去掉
再编译就正常了。
三、编写用户代码
【1】使用printf()函数通过串口输出调试信息
使用printf()函数打印代码调试信息是程序员的常规操作,这里定义了UART5,可以通过重定向print()函数关联到UART5上。再usart.c中的如下位置添加如下这段代码
#include <stdio.h>
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart5, (uint8_t *)&ch, 1, 0xFFFF);//注意把&huart1改为自己的stm32使用的串口号
return ch;
}
记得在printf()调用的位置添加#include <stdio.h>
如果编译过程中报错“identifier "FILE" is undefined”,可以如下图设置一下IAR的编译器
在Library Configuration中,Library选择full。
至此printf()函数就能正常工作了。
【2】头文件的使用
#include <xxx.h>和#include "xxx.h"的区别
对于#include "xxx.h"编译器会从当前目录找寻xxx.h文件,再去搜寻预定义的缺省路径。
对于#include <xxx.h>编译器会优先从预定义的缺省路径下寻找文件。
关于预定义的缺省路径在IAR中可以在下图位置进行添加。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgabaia
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01