日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]這幾天看了下 mbed 的源碼,給上層應(yīng)用調(diào)用的接口封裝的還是不錯(cuò)的。代碼質(zhì)量比較高,注釋也很詳細(xì),文檔和例程比較全。但是驅(qū)動(dòng)層的程序全是 C 語言編寫的,代碼質(zhì)量就沒有那么高了,注釋比較少而且不規(guī)范,比較懷疑 mbed 的穩(wěn)定性。mbed 的實(shí)時(shí)內(nèi)核是用的 RTX5 ,文件系統(tǒng)用的 FatFs ,還有一些開源的協(xié)議棧,整套系統(tǒng)比較繁雜。mbed 框架是為物聯(lián)網(wǎng)設(shè)備開發(fā)的,工業(yè)控制級(jí)別的產(chǎn)品可以考慮用 RTE 框架。RTE 框架目前驅(qū)動(dòng)層程序還不太完善,有好多需要自己去實(shí)現(xiàn),可能在過一段時(shí)間會(huì)好一些吧。總

這幾天看了下 mbed 的源碼,給上層應(yīng)用調(diào)用的接口封裝的還是不錯(cuò)的。代碼質(zhì)量比較高,注釋也很詳細(xì),文檔和例程比較全。但是驅(qū)動(dòng)層的程序全是 C 語言編寫的,代碼質(zhì)量就沒有那么高了,注釋比較少而且不規(guī)范,比較懷疑 mbed 的穩(wěn)定性。mbed 的實(shí)時(shí)內(nèi)核是用的 RTX5 ,文件系統(tǒng)用的 FatFs ,還有一些開源的協(xié)議棧,整套系統(tǒng)比較繁雜。mbed 框架是為物聯(lián)網(wǎng)設(shè)備開發(fā)的,工業(yè)控制級(jí)別的產(chǎn)品可以考慮用 RTE 框架。RTE 框架目前驅(qū)動(dòng)層程序還不太完善,有好多需要自己去實(shí)現(xiàn),可能在過一段時(shí)間會(huì)好一些吧??傊锫?lián)網(wǎng)產(chǎn)品可以用 mbed ,工業(yè)控制產(chǎn)品可以用 RTE 。這幾天封裝了 EXTI ,距離整套系統(tǒng)可以產(chǎn)生生產(chǎn)力還有很長(zhǎng)的距離要走,我也不知道整個(gè)系統(tǒng)會(huì)成什么樣子,我能堅(jiān)持多久,不管了先做再說。在這里分享我的 STM32F4 C++ 封裝之旅。今天分享《STM32F4 C++ 封裝庫 之 EXTI》,直接上代碼了~

stm32f4xx_xexTI.h 文件

/**

******************************************************************************

* \file stm32f4xx_xexTI.h

* \author XinLi

* \version v1.0

* \date 20-March-2018

* \brief Header file for external interrupt/event controller module.

******************************************************************************

* \attention

*

* Copyright © 2018 XinLi

*

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program. If not, see .

*

******************************************************************************

*/

#ifndef STM32F4XX_XEXTI_H

#define STM32F4XX_XEXTI_H

#include "stm32f4xx_ll_exti.h"

/*! External interrupt/event controller module. */

class XExti

{

public:

/*! Enumerate of EXTI lines. */

enum ExtiLine

{

Line0 = LL_EXTI_LINE_0, /*!< EXTI line 0. */

Line1 = LL_EXTI_LINE_1, /*!< EXTI line 1. */

Line2 = LL_EXTI_LINE_2, /*!< EXTI line 2. */

Line3 = LL_EXTI_LINE_3, /*!< EXTI line 3. */

Line4 = LL_EXTI_LINE_4, /*!< EXTI line 4. */

Line5 = LL_EXTI_LINE_5, /*!< EXTI line 5. */

Line6 = LL_EXTI_LINE_6, /*!< EXTI line 6. */

Line7 = LL_EXTI_LINE_7, /*!< EXTI line 7. */

Line8 = LL_EXTI_LINE_8, /*!< EXTI line 8. */

Line9 = LL_EXTI_LINE_9, /*!< EXTI line 9. */

Line10 = LL_EXTI_LINE_10, /*!< EXTI line 10. */

Line11 = LL_EXTI_LINE_11, /*!< EXTI line 11. */

Line12 = LL_EXTI_LINE_12, /*!< EXTI line 12. */

Line13 = LL_EXTI_LINE_13, /*!< EXTI line 13. */

Line14 = LL_EXTI_LINE_14, /*!< EXTI line 14. */

Line15 = LL_EXTI_LINE_15, /*!< EXTI line 15. */

#ifdef LL_EXTI_LINE_16

Line16 = LL_EXTI_LINE_16, /*!< EXTI line 16. */

#endif

#ifdef LL_EXTI_LINE_17

Line17 = LL_EXTI_LINE_17, /*!< EXTI line 17. */

#endif

#ifdef LL_EXTI_LINE_18

Line18 = LL_EXTI_LINE_18, /*!< EXTI line 18. */

#endif

#ifdef LL_EXTI_LINE_19

Line19 = LL_EXTI_LINE_19, /*!< EXTI line 19. */

#endif

#ifdef LL_EXTI_LINE_20

Line20 = LL_EXTI_LINE_20, /*!< EXTI line 20. */

#endif

#ifdef LL_EXTI_LINE_21

Line21 = LL_EXTI_LINE_21, /*!< EXTI line 21. */

#endif

#ifdef LL_EXTI_LINE_22

Line22 = LL_EXTI_LINE_22, /*!< EXTI line 22. */

#endif

#ifdef LL_EXTI_LINE_23

Line23 = LL_EXTI_LINE_23, /*!< EXTI line 23. */

#endif

#ifdef LL_EXTI_LINE_24

Line24 = LL_EXTI_LINE_24, /*!< EXTI line 24. */

#endif

#ifdef LL_EXTI_LINE_25

Line25 = LL_EXTI_LINE_25, /*!< EXTI line 25. */

#endif

#ifdef LL_EXTI_LINE_26

Line26 = LL_EXTI_LINE_26, /*!< EXTI line 26. */

#endif

#ifdef LL_EXTI_LINE_27

Line27 = LL_EXTI_LINE_27, /*!< EXTI line 27. */

#endif

#ifdef LL_EXTI_LINE_28

Line28 = LL_EXTI_LINE_28, /*!< EXTI line 28. */

#endif

#ifdef LL_EXTI_LINE_29

Line29 = LL_EXTI_LINE_29, /*!< EXTI line 29. */

#endif

#ifdef LL_EXTI_LINE_30

Line30 = LL_EXTI_LINE_30, /*!< EXTI line 30. */

#endif

#ifdef LL_EXTI_LINE_31

Line31 = LL_EXTI_LINE_31, /*!< EXTI line 31. */

#endif

};

/*! Enumerate of EXTI modes. */

enum ExtiMode

{

ModeInterrupt = LL_EXTI_MODE_IT, /*!< EXTI interrupt mode. */

ModeEvent = LL_EXTI_MODE_EVENT, /*!< EXTI event mode. */

ModeInterruptEvent = LL_EXTI_MODE_IT_EVENT, /*!< EXTI interrupt and event mode. */

};

/*! Enumerate of EXTI triggers. */

enum ExtiTrigger

{

TriggerNone = LL_EXTI_TRIGGER_NONE, /*!< EXTI none trigger. */

TriggerRising = LL_EXTI_TRIGGER_RISING, /*!< EXTI rising trigger. */

TriggerFalling = LL_EXTI_TRIGGER_FALLING, /*!< EXTI falling trigger. */

TriggerRisingFalling = LL_EXTI_TRIGGER_RISING_FALLING, /*!< EXTI rising and falling trigger. */

};

XExti(ExtiLine line, ExtiMode mode, ExtiTrigger trigger = TriggerNone);

virtual ~XExti();

void setLine(ExtiLine line);

ExtiLine getLine() const;

void setMode(ExtiMode mode);

ExtiMode getMode() const;

void setTrigger(ExtiTrigger trigger);

ExtiTrigger getTrigger() const;

void setFlag();

void clearFlag();

bool isFlagSet() const;

bool open();

void close();

bool isOpen() const;

private:

ExtiLine line;

ExtiMode mode;

ExtiTrigger trigger;

bool openFlag;

XExti(const XExti &) = delete;

XExti & operator = (const XExti &) = delete;

};

#endif // STM32F4XX_XEXTI_H

stm32f4xx_xexti.cpp 文件

/**

******************************************************************************

* \file stm32f4xx_xexti.cpp

* \author XinLi

* \version v1.0

* \date 20-March-2018

* \brief External interrupt/event controller module driver.

******************************************************************************

* \attention

*

* Copyright © 2018 XinLi

*

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program. If not, see .

*

******************************************************************************

*/

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉