0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样将STM32F4xx标准外围设备库与MikroC Pro for ARM集成

454398 来源:网络整理 作者:网络整理 2019-12-05 16:38 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

STM32F4xx系列微处理器比市场上同类产品先进得多。除了是快速的32位MCU,STM32F4还具有丰富的硬件外设支持以及DSP引擎优势。就功能和价格而言,STM32F4是全胜者。最近,STM32用户社区激增。 STM32 Discovery开发板正在以前所未有的速度增长。最近,我几次收到读者关于STM32F4xx标准外设库(SPL)与MikroC Pro for ARM集成的切实询问,因此,尽管这不是我关于STM32 ARM的主流文章之一,但我还是觉得我应该解决这个话题。之前,我展示了如何通过MikroC移植STM32F1xx系列设备的STM32F1xx SPL。这篇文章与以前的文章没有什么不同-只是微小的变化。我建议读者在阅读这篇文章之前先阅读较早的帖子。

目前MikroC编译器是为数不多的尚未正式为SPL集成提供任何支持的编译器之一。希望他们将来会添加此支持,但是MikroC解决方案的方式与其他编译器不同。 MikroC拥有非常强大的IDE和丰富的库基础支持,而SPL为用户提供了对芯片硬件的更多控制权。就像我之前说过的一样,它们变成了一把双刃剑。

所需的工具

首先,您需要MikroC Pro for ARM。该编译器的演示版本提供8k代码限制,足以满足第一手ARM经验。您需要一块STM32F4xx板。我使用了STM32F407VG发现。 ST Microelectronics的该板 某种程度上是STM32F4系列的旗舰Discovery板,并且非常受欢迎。最后,您将需要我包含在示例中的STM32F4xxx SPL。修改其中的文件以使其与MikroC环境兼容。

要做的事情

首先,我们需要准备用于ARM编译器的MikroC PRO,以链接SPL。我假设编译器已预先安装。首先转到编译器的安装文件夹,然后找到 include 文件夹。就我而言,它是: C: Users Public Documents Mikroelektronika mikroC PRO for ARM Include 。

在此文件夹中,有一个名为 stdint.h的文件。将其重命名为 stdint(备份).h 并从提供的文件夹中复制新的 stdint.h 文件到这个位置。如果您在上一篇文章中已经这样做,或者已升级到MikroC Pro for ARM版本4.15(在撰写本文时为最新版本),请跳过此部分。

接下来,我们必须更改编译器的某些选项。启动编译器,并如下所示:

工具》》选项》》输出设置

检查 区分大小写 。应用并关闭此窗口。如果您之前已经做过,请再次跳过此部分。

从现在开始要谨慎命名和字母大小写,因为编译器现在对此很敏感,否则您将注定要陷入编程不幸的深渊。只是一个简单但有用的提示-在进行一些编辑或修改后,很少会编译您的代码。这将极大地帮助您调试一小段编码窗口中的微小错误。

最后将SPL保持在安全的位置。每当您使用SPL编码新项目时,都应从该位置复制该新项目并与该项目一起使用。这样可以确保原始的SPL副本不会被意外修改。

使用SPL编码

示例代码只是另一个闪烁的代码示例,可以满足要求。我不会告诉您如何在MikroC中创建新项目。我想这是众所周知的。创建一个新项目,并使用 项目管理器 添加SPL文件夹中的所有源文件和头文件。您可以仅添加所需外围设备的头文件和源文件,也可以添加所有文件(如果不确定哪个代表哪个)。前一种方法比后者花费更少的编译时间。另外,添加 defines.pld 项目级别定义文件。现在您可以使用SPL进行编码了。

请注意,由于MikroElektronika尚未正式集成SPL,因此您会注意到红色带有SPL的代码各部分下的错误标记。这并不罕见,也不是错误。所以不用担心。

代码:

#include “stm32f4xx_gpio.h” #include “stm32f4xx_usart.h” #include “stm32f4xx_rcc.h” void setup_GPIOs(); void check_LEDs(); void main() { unsigned char s = 0; setup_GPIOs(); check_LEDs(); while(1) { if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)) { while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 1); s++; } if(s 》= 6) { s = 0; } switch(s) { case 1: { GPIO_SetBits(GPIOD, GPIO_Pin_12); break; } case 2: { GPIO_SetBits(GPIOD, GPIO_Pin_13); break; } case 3: { GPIO_SetBits(GPIOD, GPIO_Pin_14); break; } case 4: { GPIO_SetBits(GPIOD, GPIO_Pin_15); break; } case 5: { GPIO_SetBits(GPIOD, GPIO_Pin_12); GPIO_SetBits(GPIOD, GPIO_Pin_13); GPIO_SetBits(GPIOD, GPIO_Pin_14); GPIO_SetBits(GPIOD, GPIO_Pin_15); break; } default: { break; } } Delay_ms(90); GPIO_ResetBits(GPIOD, GPIO_Pin_12); GPIO_ResetBits(GPIOD, GPIO_Pin_13); GPIO_ResetBits(GPIOD, GPIO_Pin_14); GPIO_ResetBits(GPIOD, GPIO_Pin_15); Delay_ms(90); } } void setup_GPIOs() { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &GPIO_InitStructure); } void check_LEDs() { GPIO_SetBits(GPIOD, (GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15)); Delay_ms(900); GPIO_ResetBits(GPIOD, (GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15)); }

演示视频链接:https://www.youtube.com/watch?v=ngk-4Lm11yU。

我个人还没有到目前为止,我一直依赖SPL,而且我相信原始级别的编码学习。 SPL允许在STM32领域中输入教科书。难怪它使编码变得容易,但是在我看来,它的不利影响是它的用户花在参考手册和数据表上的时间更少。反过来,这将影响他们获得对内部硬件外围设备及其工作原理的扎实学习。如果SPL通过这种方式使生活变得轻松,那为什么不使用MikroC库。这些甚至更易于使用。有时图书馆是救星,而有时它们是诅咒。有时您不想重新发明“轮子”,但您当然想用它制造汽车,而我的朋友比什么都值钱。在这一点上,我不想就此事进一步辩论。我将这个选择留给用户。

文件:将STM32F4xx标准外围设备库与MikroC Pro for ARM集成。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编译器
    +关注

    关注

    1

    文章

    1669

    浏览量

    51083
  • STM32F4xx
    +关注

    关注

    0

    文章

    15

    浏览量

    13146
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32 如何驱动 瀚海微SD NAND

    一、工程说明与接口定义 ​ 适用芯片:​ STM32F4xx / STM32F7xx / STM32H7xx ​(其他系列可按 HAL 调整) 接口方式:​ SDIO 4-bit 总线
    的头像 发表于 10-27 10:40 245次阅读

    GD32F4xx系列MCU基础工程资料

    GD32F4xx系列MCU基础工程创建.
    发表于 08-04 14:53 2次下载

    STM32F10xxx参考手册

    STM32F1XX数据手册中文版
    发表于 07-10 16:09 6次下载

    stm32f4新手求教

    芯片包stm32f4xx_DFP3.0.0只有1.98m大小,芯片包stm32f4xx_DFP2.16.0却有152m大小,为何差距这么大,我该装哪个芯片包?
    发表于 07-09 12:04

    外围设备通过手机连接到BLE应用程序,为什么不能连接到Infineaon BLE?

    使用 ch06_ex01_periab \" le 项目创建了外围设备。\" \" 使用像 LightBlue 这样的移动应用程序,我能够连接到这个外围设备并更改特征值。 我已经使用 \"
    发表于 07-07 08:06

    是否有可能使用CYSPP配置文件连接到外围设备

    我们的现有系统使用中央和外围设备,使用基于 Microchip RN4020 的中央和外围设备。 由于供应限制的原因,我们希望英飞凌 CYBT-483056 SoC 用于 BLE central。 我们想知道是否有可能使用CY
    发表于 07-07 06:17

    STM32F4标准外设资料

    stm32f4xx.h,标准外设
    发表于 06-08 09:49 5次下载

    STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册

    电子发烧友网站提供《STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册.pdf》资料
    发表于 06-06 17:06 9次下载

    基于STM32 HAL标准的esp8266接入机智云方案(二)

    在《基于STM32HAL标准的esp8266接入机智云方案(一)》中,我们详细介绍了硬件连接和机智云客户端的创建。本篇重点讲解如何下
    的头像 发表于 05-28 18:02 1121次阅读
    基于<b class='flag-5'>STM32</b> HAL<b class='flag-5'>库</b>与<b class='flag-5'>标准</b><b class='flag-5'>库</b>的esp8266接入机智云方案(二)

    STM32F103×8/STM32F103×B MCU手册

    参考第2.2节:整个系列的完全兼容性。中密度STM32F103xx数据手册必须与低、中、高密度STM 32 f 10 xx参考手册一起阅读。有关数据手册和参考手册的设备勘误表信息,请参
    发表于 03-18 16:37 0次下载

    STM32F4xx中文参考手册--ST意法半导体

    STM32F4xx中文参考手册--全中文主营ST意法芯片,需要可提供样品测试,数据手册,欢迎联系.
    发表于 02-11 16:39 7次下载

    GD32F4xx硬件开发指南

    电子发烧友网站提供《GD32F4xx硬件开发指南.pdf》资料免费下载
    发表于 02-07 17:20 3次下载
    GD32<b class='flag-5'>F4xx</b>硬件开发指南

    GD32F4xx用户手册

    电子发烧友网站提供《GD32F4xx用户手册.pdf》资料免费下载
    发表于 01-16 14:49 14次下载
    GD32<b class='flag-5'>F4xx</b>用户手册

    STM32F405xxSTM32F407xx微控制器数据手册

    电子发烧友网站提供《STM32F405xxSTM32F407xx微控制器数据手册.pdf》资料免费下载
    发表于 01-03 14:49 4次下载

    STM32G471xx/473xx/474xx/483xx/484xx设备勘误表

    电子发烧友网站提供《STM32G471xx/473xx/474xx/483xx/484xx设备
    发表于 12-20 15:26 1次下载