STM32学习一:那些MDK5的坑

话说前阵研究了一会Arduino,并用它实现了一些简单的产品,如自制了一个PM2.5检测仪,由于可以选择任何传感器,我选择是口碑不错的攀藤PM7003,是一款检测精度较高的激光传感器,做出来的检测仪检测精度直逼数千甚至数万元的国外同类产品,这让一个原来主要接触软件开发的我似乎又看到了一个更为广阔的硬件世界,拿着榔头看哪都是钉子,我现在看到一个硬件就想它后面的技术原理微笑

当然,在研究Arduino的也过程当然也遇到了一些问题,比如它的MCU还是不够强大,接口不够丰富等,最主要的是我发现批量生产的产品大多数在用另一个平台——STM,该平台价格低廉,功能强大,商用产品无数,有关庞大的开发者,相比起来Arduino比较适合用来做非大批量的产品或产品原型,而STM32平台才是实现商用大批量产品的不二之选,也是为什么我开启了STM32的学习之路。

介绍完背景后就该开始学习了,看了一些视频教程介绍完其背景及一些基础知识,比如其属于ARM体系历史及结构、Cortex架构、STM32各系MCU特点等,接着该就是安装MDK并用其中的Keil uVision进行第一无输出程序的编写了。一般的教程都用的MDK4.12的版,而我在网上搜了一下,发现最新版本是5.22,嘿嘿,当然用新版本啊!正是这个举动让我入了不少坑,下面也是这些坑的记录。

1、新建项目没有相应的设备类型选择

安装后MDK5.22后就是打开Keil uVision并新建一个Project啊,这难道不是一般IDE的使用通则用?请慢,虽然是这样,但这个MDK5.22(或说uVision5)却不完全是这样,在新建项目中的Device是并没能STM32系列芯片供你选择,只有默认的ARM系列通用的设备,怎么不按套路出牌?视频教程里面明明不是这样!大笑


原来从MDK5开始设备类型需要通过Pack Installer来在线更新,也就是说要通过下面这个按键先安装设备包才能选择设备类型,你说是不是坑?


好吧,再吐槽一下这个Pack Installer的安装过程吧,反正我在刷新列表过程是数次中断,最后不得不通过VPN才勉强完成,天朝这网络环境啊,再次诅咒那个创建的GFW的教授闭嘴,另一个插曲是即使用VPN也不是所有的Packer都可以安装,从安装过程分析可知,这些Pack分别位于不同厂商的网站,从产品的角度(职业病又患了)来看这是很不好的体验,为了追求可扩展性将这些设备列表的更新分布到IDE不能自己控制的网站上,真不是一个明智的选择。


2、创建项目后没有自动添加启动文件

按说创建项目并选择设备类型后会让你选择是否添加启动文件(教学视频里这么演示的,呵),在写完main函数后就可以直接编译了,可这是MDK4的套路,MDK5不是这样的!在MDK5中,创建项目后不会让你选择是不添加启动文件,而应该在这里自己选择


别问我怎么找到的,作为一个初学者,我也是摸索了半天。

3、竟然不包括基本的头文件

设备也选择好了,启动文件也有了,这下总算可以编译了,嘿嘿,图样图森破……竟然提示“core_cm3.h”,这是几个意思?当然,最后我是通过在MDK的安装目录查找这个文件,并将其目录加入项目的include path才解决的。


这个比较奇怪,因为程序只是一个空的main函数,什么功能都没有 ,需要引用的头文件系统竟然不能自动带好。好了,程序终于可以可以编译了,即使连"Hello World!"都没输出。


以上几个问题特别是第三个问题算是比较奇葩了,作为初学者感觉坑不少,特此记录,如果能让其他学习者减少入坑的机会也算是不枉我敲字截图了。



  • 17
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Version: 2.2.0 (2021-07-22) Keil.STM32F3xx_DFP.2.2.0.pack Updated Pack to STM32Cube_FW_F3 Firmware Package version V1.11.2: Updated HAL to version V1.5.5. External interrupts and events (EXTI) HAL Universal serial bus full-speed device interface (USB) LL Added global define USE_HAL_DRIVER and USE_FULL_LL_DRIVER to the component ::Device:STM32Cube Framework:STM32CubeMX. Added global define USE_HAL_DRIVER and USE_FULL_LL_DRIVER to the component ::Device:STM32Cube HAL:COMMON. STM32CubeMX integration: MX_Device_h.ftl: Updated parsing of USART virtual mode. Updated generation of macros: Added handling for '(' and ')' symbols. FrameworkCubeMX_gpdsc.ftl: Added support for Timebase Source TIMx. Board Examples: Terminating app_main thread with osThreadExit() to avoid endless loop. Updated RTX configuration (CMSIS 5.8.0). Updated template based files (MDK-Middleware 7.13.0). Configured MDK projects to use Arm Compiler 6. Changed Assembler option to armclang (Auto Select). Updated all USB Host/Device examples with user templates from MDK-Middleware v7.11.1. FileSystem, USB: Changed variant selection to "MDK-Plus". Updated Graphics examples to use Segger emWin version 5.50. CMSIS Driver: CAN: Corrected SetBitrate function to leave Silent and Loopback mode as they were. Corrected SetMode function to clear Silent and Loopback mode when NORMAL mode is activated. Corrected MessageSend function to only access required data for sending. Corrected abort message send functionality. I2C: Corrected pin configuration: MX_I2Cx_SMBA_GPIO_PuPdOD replaced with MX_I2Cx_yyy_GPIO_PuPdOD. Corrected usage function name USB Device: Corrected transmitted count for non-control IN endpoints. Updated USBD_EndpointConfigure function to check that maximum packet size requested fits into configured FIFO (compile time configured). Removed include of stm32f3xx_hal_pcd.h header.
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值