小编fer*_*ith的帖子

如果从ISR调用函数,则安全检测?

我正在为ARM Cortex M3(NXP LPC1769)微控制器开发软件.目前我正在寻找机制以检测我的功能是否在ISR中被调用.我认为我必须检查一个寄存器.基于这些信息,我想称之为困难的功能.

如果有一个包含必要信息的寄存器,我已经检查了参考手册.

例如,我试图根据"中断有效位寄存器"(IABR)寄存器检测我是否从ISR(我使用SysTick-ISR)调用.如果ISR处于活动状态,该寄存器应为!= 0.但值为0x00000000.这意味着没有中断处于活动状态.除了这个测试,我在参考手册中检查了NVIC和SC寄存器,搜索包含必要标志的寄存器,但我没有找到.

有没有人知道我的问题适合的注册/机制?

embedded cortex-m3

17
推荐指数
2
解决办法
6045
查看次数

减少增加推送子树的时间

我在我的项目中使用,它包含几个子项目.每个子项目使用命令在主项目中"链接" .这是我在实现"svn externals"的方式.我几周以来一直在使用它,但是在每次提交期间,将我的更改从子树推送到远程位置的时间都会增加.当我使用命令推送更改时,它看起来像这样

git subtree push -P platform/rtos rtos master

git push using:  rtos master

1/    215 (0)2/    215 (1)3/    215 (2)4/    215 (3)5/    215 (4)6/    215 (5)7/    215 (6)8/    215 (7)9/    215 (8)10/    215 (9)11/    215 (9)12/    215 (10)13/    215 (11)14/    
....

20 more lines

....

(204)209/    215 (205)210/    215 (206)211/    215 (207)212/    215 (208)213/    215 (209)214/    215 (210)215/    215 (211)To https://github.com/rtos/rtos.git
   64546f..9454ce  9a9d34c5656655656565676768887899898767667348590 -> master
Run Code Online (Sandbox Code Playgroud)

有没有办法"清理"子树,从而减少推动更改的时间?

git github git-subtree

16
推荐指数
3
解决办法
4729
查看次数

如果资源获取可能失败,如何实施RAII

我想在RAII的帮助下实现一个课程.资源应该在构造函数中获取,但是acquistition可能会失败.我将在下面使用FILE给出一个示例:

class file {
public:
    file(const char* filename) {
        file_ = fopen(filename, "w+");
        if(!file_) {
          // Okay
        }
        else {
          // ERROR
        }
    }

    ~file() {
        if (fclose(file_)) {
           // ERROR
        }
    }

    void write(const char* str) {
        if (EOF == fputs(str, file_)) {
            throw runtime_error("file write failure");
        }
    }
private:
    FILE* file_;
};
Run Code Online (Sandbox Code Playgroud)

那么,如果fopen返回NULL,那么处理错误的最佳方法是什么?因为它是构造函数,所以我也无法返回NULL.

我希望有人能给我一个如何处理这些错误的提示!

谢谢您最好的问候,

闪光

c++ raii

1
推荐指数
1
解决办法
1255
查看次数

标签 统计

c++ ×1

cortex-m3 ×1

embedded ×1

git ×1

git-subtree ×1

github ×1

raii ×1