完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
工欲利其事,必先利其器,今天就先来利一利STM32CubeMx这个器吧;
先说一下STM32CubeMx是干啥子的吧,它能帮你建工程,生成部分代码,你只要往相应的代码里面添加你的功能便可以了,总之,它可以减少你的工作量就对了; 1.下载安装 a.下载安装JRE:STM32CubeMx是基于JAVA运行的,所以要先下载安装JRE, 2.安装库:STM32CubeMx需要相对应的芯片库; 下载安装完成后,打开STM32CubeMx,使用前,要先安装一下STM32CubeMx的库,我们就用在线安装吧,比较简单: Help-》Manage embedded software packages Alt+U 弹出如下图所示的界面:1.选择你的芯片-》2.选一个你喜欢的库版本-》3.点“Install Now” 等。。。等。。。等。。。过程可能有点漫长,视网络而定。。 3.应用 我们就来做一个简单的应用吧,控制GPIO 灯闪烁的程序; 打开Stm32CubeMx,界面长这样子,点New Project: 点New Project后,弹出如下界面: 1)、给你选芯片的,可以一级级往下选,也可以直接搜索里面搜索你的芯片;这个软件超好用,不仅能减轻软件工程师的工作量,也适合于应件工程师做芯片选型; 2)、芯片简单介绍; 3)、芯片主要特征,型号,flash,封装,RAM,IO个数,频率,连10K片价格都有,这货不仅方便软件工程师建项目,也方便硬件工程师做芯片选型,一目了然; 看板子原理图,选的是STM32F207IGT6,软件工程师不仅要会敲代码,还要会查原理图,这点很重要; 选芯片,可以直接在Part Number Search栏搜,也可以自已一级一级点选,Core是核,Series是系列,Line选型号,Package选封装,选好后,点Start Project; 点Start Project后,弹出如下界面: 1)、Pinout:管脚配置; 2)、Clock Configuration:时钟配置; 3)、设置中间层,比如实时操作系统,网络协议栈等(后面有空再讲,LED也就几个GPIO口,不用那么复杂); 4)、外设,如ADC,串口,I2C,SPI配置等,这项目配几个GPIO也不需要用到; 我们先来配一下时钟, 5)、可以在这里直接配置管脚,我们稍等会要把GPIO配置成输出脚; 我们先来配一下时钟,鼠标点击 Clock Configuration 页, 点击 Clock Configuration 页后,页面变成这样子的,我们直接在HCLK位置上填上120吧,也就是配个120MHz的系统频率,我们平常说的Intel XXX 的CPU牛逼,主频多高多高,就是这个,其实也可以设置成别的值,只要《120MHz就行了;至于如何选择时钟源,如何设置倍频,分频等等,我们不需要参与,软件自动给我们设置好了; 配完时钟后,我们点回Pinout页,开始配引脚吧,具体用哪个引脚呢?当然是看原理图,软件工程师要学会看原理图,查找原理图,重要的事情要说三遍,三遍,三遍;什么?你没原理图?找硬件工程师要去; 打开原理图,看图说话,图中告诉我们,JTAG,KEY,LED在11页; 翻到第11页,看到这几个LED灯了吧?在原理图上搜一下LED_R,LED_G,LED_O,LED_B分别连到STM32哪个引脚? LED_R = PD12,LED_G = PG6,LED_O = PG8,LED_B = PC7;我们就把这4根引脚配置成输出管脚吧,看图,没有上拉3.3V,就用推挽输出吧(pull); 知道要配哪些引脚了,我们可以开始配了,回到STM32CubeMx界面上,点Pinout, 在芯片这个页面,可以用鼠标滚轮放大缩小,可以拖动,找到这几个脚,点左键,把它们都配成GPIO_Output; 配完所有所需要的引脚后,点Configuration,看到GPIO了吧?这就是我们刚刚配的GPIO口,点它; 我们可以看到GPIO的详细配置界面: GPIO output level:IO口初始状态,高电平/低电平; GPIO mode:Push/OpenDrain,也就是推挽和漏极开路,OD模式需要接上拉,一般驱动能力不够时用,看原理图中没上拉,那就选个推挽吧; 简单地说一说推挽和开路吧, 推挽:可以理解为高电平就输出高电平,低电平就输出低电平,不需要外部3.3V做上拉; 开路,就理解为低电平时,把它接地,高电平时,把芯片管脚断掉,所以需要上拉个3.3V; GPIO Pull-up/Pull-down:如果设置为推挽输出,就要选不拉; Maximum output speed:GPIO控制LED灯,随便选一个吧; 设置完成后,点OK;配置完成! 接下来,生成代码咯,Project -》 Settings.。. 弹出这样一个界面 这里有三页,我们只设置几个参数便可,其他的默认; Project Name:项目名 Project Location:项目目录 ToolChain / IDE:集成开发环境,我用的是 Keil Arm V4; 其他的全默认; 其余的两页,可以了解下, Code Generator:代码生成风格,比如,是否把库全部生成进项目,还是部分等; Advanced Setting:高级设置,库设置等,用什么库,就用HAL吧,还有个LL库,后面有空面介绍这两个库吧; 设置完成后,点OK; 接下来:Project -》 Generate Code,然后,等呀等呀等呀~~~ 好了! 好了之后,会弹出个对话框, 要打开目录,还是打开项目,还是关闭,自个选吧; 我们就选打开项目吧; 打开后项目是这样子的: 看到熟悉的main()了吧?要添加/修改的代码,就在main里面! 配置的系统时钟,就在 SystemClock_Config(); 里面; 配置的GPIO,就在 MX_GPIO_Init(); 里面; 我们接下来,就在while(1) 里面添加个 LedHandler(); 让Led闪灯;第106行,LedHandler();主循环会不断地执行这个函数; 看下LedHandler()函数的实现,程序设定了一个定时器,1000ms时间到了GPIO反转一次,程序使用HAL库,是ST弄出来的,库会对一些寄存器操作封装起来,用起来比较直观,有兴趣的同学可以看一下库的代码,最根本也是对寄存器的操作; 说一下题外话,在PIC,51时代,很多人喜欢直接用地址操作寄存器,少去一些诸如调用函数的入栈,出栈等操作,效率也相对提高了;但现在,用的120MHz的MCU,还是三级流水线的,对于这点代码时间的差别,已微乎其微,Who Care?个人还是比较喜欢使用库,标准库也好,HAL库也好,LL库也好,总之,能够提高开发效率,增强代码可读性的事儿,能用就用! 写好了吧?保存,编译,烧录,重上电/复位,看,这4个灯,闪起来了!!!上个图,呃,抱歉了,图看不到闪烁,那请自行想象吧~~~ |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
645浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
516浏览 3评论
532浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
505浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 11:28 , Processed in 0.859947 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号