硬汉嵌入式论坛

 找回密码
 立即注册
查看: 11421|回复: 10
收起左侧

[客户分享] MDK5.11中带RTE_Driver更加完善,全寄存器操作,言简意赅

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107759
QQ
发表于 2014-6-14 14:26:13 | 显示全部楼层 |阅读模式
喜欢寄存器操作的,可以尝试用这些驱动,重要的是SDIO, USB这些复杂的驱动也给出了。
ST官方推出的那个CubeF4封装的一层又一层,太烦人了。
1.png


这里贴一个外部中断的驱动:
  1. /* ----------------------------------------------------------------------
  2. * Copyright (C) 2013 ARM Limited. All rights reserved.
  3. *  
  4. * $Date:        12. March 2013
  5. * $Revision:    V1.00
  6. *  
  7. * Project:      EXTI Driver definitions for ST STM32F4xx
  8. * -------------------------------------------------------------------- */

  9. #ifndef __EXTI_STM32F4XX_H
  10. #define __EXTI_STM32F4XX_H

  11. #include <stdint.h>
  12. #include <stdbool.h>
  13. #include "stm32f4xx.h"


  14. #if defined (__CC_ARM)
  15. #define __FORCE_INLINE  static __forceinline
  16. #else
  17. #define __FORCE_INLINE  __STATIC_INLINE
  18. #endif


  19. /// EXTI Pin
  20. typedef enum _EXTI_PIN {
  21.   EXTI_PIN_PA,
  22.   EXTI_PIN_PB,
  23.   EXTI_PIN_PC,
  24.   EXTI_PIN_PD,
  25.   EXTI_PIN_PE,
  26.   EXTI_PIN_PF,
  27.   EXTI_PIN_PG,
  28.   EXTI_PIN_PH,
  29.   EXTI_PIN_PI,
  30. } EXTI_PIN;

  31. /// EXTI Mode
  32. typedef enum _EXTI_MODE {
  33.   EXTI_MODE_INTERRUPT,
  34.   EXTI_MODE_EVENT
  35. } EXTI_MODE;

  36. /// EXTI Trigger
  37. typedef enum _EXTI_TRIGGER {
  38.   EXTI_TRIGGER_NONE,
  39.   EXTI_TRIGGER_RISING,
  40.   EXTI_TRIGGER_FALLING,
  41.   EXTI_TRIGGER_RISING_FALLING
  42. } EXTI_TRIGGER;


  43. /**
  44.   \fn          void EXTI_Setup (void)
  45.   \brief       Setup EXTI
  46. */
  47. extern void EXTI_Setup (void);

  48. /**
  49.   \fn          void EXTI_ConfigurePin (uint32_t line, EXTI_PIN pin)
  50.   \brief       Configure EXTI pin
  51.   \param[in]   line  Line number
  52.   \param[in]   pin   ref EXTI_PIN
  53.   \return      true  - success
  54.                false - error
  55. */
  56. extern bool EXTI_ConfigurePin (uint32_t line, EXTI_PIN pin);

  57. /**
  58.   \fn          void EXTI_ConfigureLine (uint32_t     line,
  59.                                         EXTI_MODE    mode,
  60.                                         EXTI_TRIGGER trigger)
  61.   \brief       Configure EXTI line
  62.   \param[in]   line     Line number
  63.   \param[in]   mode     \ref EXTI_MODE
  64.   \param[in]   trigger  \ref EXTI_TRIGGER
  65. */
  66. extern void EXTI_ConfigureLine (uint32_t     line,
  67.                                 EXTI_MODE    mode,
  68.                                 EXTI_TRIGGER trigger);

  69. /**
  70.   \fn          void EXTI_ReadPendingBit (uint32_t line)
  71.   \brief       Read pending bit
  72.   \param[in]   line  Line number
  73.   \return      bit value (0 or 1)
  74. */
  75. __FORCE_INLINE bool EXTI_ReadPendingBit (uint32_t line) {
  76.   return ((EXTI->PR & (1UL << line)) != 0);
  77. }

  78. /**
  79.   \fn          void EXTI_ClearPendingBit (uint32_t line)
  80.   \brief       Clear pending bit
  81.   \param[in]   line  Line number
  82. */
  83. __FORCE_INLINE void EXTI_ClearPendingBit (uint32_t line) {
  84.   EXTI->PR = 1UL << line;
  85. }

  86. /**
  87.   \fn          void EXTI_SoftwareTrigger (uint32_t line)
  88.   \brief       Generate Software trigger
  89.   \param[in]   line  Line number
  90. */
  91. __FORCE_INLINE void EXTI_SoftwareTrigger (uint32_t line) {
  92.   EXTI->SWIER = 1UL << line;
  93. }


  94. #endif /* __EXTI_STM32F4XX_H */
复制代码
回复

使用道具 举报

116

主题

800

回帖

1148

积分

至尊会员

积分
1148
QQ
发表于 2014-6-16 16:41:57 | 显示全部楼层
还是习惯库操作,代码看起来比较舒服
回复

使用道具 举报

0

主题

5

回帖

0

积分

新手上路

积分
0
发表于 2014-6-18 10:42:57 | 显示全部楼层
请问RTE_Driver是什么来的?用MDK5.1创建project的时候,会有个RTE文件夹,里面会有一些RTE_Components的头文件和一个Device文件夹,很想大神来细说一下是什么作用的呢[s:130]
专注于STM32
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107759
QQ
 楼主| 发表于 2014-6-18 10:58:12 | 显示全部楼层
电子无聊大神:
请问RTE_Driver是什么来的?用MDK5.1创建project的时候,会有个RTE文件夹,里面会有一些RTE_Components的头文件和一个Device文件夹,很想大神来细说一下是什么作用的呢[s:130]  
1.png
回复

使用道具 举报

0

主题

5

回帖

0

积分

新手上路

积分
0
发表于 2014-6-18 11:37:51 | 显示全部楼层

回 eric2013 的帖子

eric2013:
 (2014-06-18 10:58) 
小框框里面的GPIO和下面STDPERIPH库里面的GPIO 有什么区别呢?
专注于STM32
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107759
QQ
 楼主| 发表于 2014-6-18 11:56:04 | 显示全部楼层

回 电子无聊大神 的帖子

电子无聊大神:小框框里面的GPIO和下面STDPERIPH库里面的GPIO 有什么区别呢? (2014-06-18 11:37) 
下面那个1.3.0是ST官方的F4库
回复

使用道具 举报

0

主题

5

回帖

0

积分

新手上路

积分
0
发表于 2014-6-18 12:22:08 | 显示全部楼层

回 eric2013 的帖子

eric2013:下面那个1.3.0是ST官方的F4库 (2014-06-18 11:56) 
这个标准外设库我知道,但我还是不知道什么是RTE_DRIVER,它跟STDPERIPH_DRIVER有什么区别和联系?因为我之前是用MDK V4.72的嘛,以前都是把V3.5的库复制进来建立project的,现在变成MDK5.1之后就不了解了,比如我要操作GPIO,就把标准外设库的GPIO打勾,那上面你的图里面的小框框里面的GPIO是什么作用的呢?
       小白的迷惑啊啊啊啊,麻烦了。[s:129]
专注于STM32
回复

使用道具 举报

0

主题

5

回帖

0

积分

新手上路

积分
0
发表于 2014-6-18 12:30:15 | 显示全部楼层
我把那里的文件打开来看又有些略懂的感觉了,不过加了那个GPIO就会编译出错 30个错误都是expected an identifier
专注于STM32
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107759
QQ
 楼主| 发表于 2014-6-18 12:45:52 | 显示全部楼层

回 电子无聊大神 的帖子

电子无聊大神:我把那里的文件打开来看又有些略懂的感觉了,不过加了那个GPIO就会编译出错 30个错误都是expected an identifier (2014-06-18 12:30) 
暂时先不要搞这个RTE了,这个做的还不是特别完善,还是像用4.72一样用5.11就行了。
回复

使用道具 举报

0

主题

21

回帖

0

积分

新手上路

积分
0
发表于 2014-6-18 16:04:36 | 显示全部楼层
谢谢楼主
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2014-7-21 15:56:59 | 显示全部楼层
MDK5.11中带RTE_Driver更加完善,全寄存器操作,言简意赅
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-13 06:37 , Processed in 0.350275 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表