簡體   English   中英

MBED代碼不附加中斷

[英]MBED Ticker doesn't attach interrupt

我有一堂課:

#ifndef _BUTTON_LISTENER_H_
#define _BUTTON_LISTENER_H_

#include <iostream>
#include <vector>
#include "mbed.h"
#include "Buttons/MenuButton.h"
#include "MenuNavigator.h"

class MenuNavigator;

class ButtonListener
{
    public: 
        ButtonListener(MenuNavigator* navigator, unsigned int samplePeriod_us,
            MenuButton* select, MenuButton* down, 
            MenuButton* up, MenuButton* cancel);
        vector<MenuButton*> getButtons();
        MenuNavigator* getNavigator();
    protected:
        void init();
        void isr();
        vector<MenuButton*> buttons;
        MenuNavigator* navigator;
        unsigned int samplePeriod_us;
        Ticker ticker;
};

#endif

及其實現:

#include "ButtonListener.h"
#include "Buttons/MenuButton.h"

ButtonListener::ButtonListener(MenuNavigator* navigator, 
    unsigned int samplePeriod, MenuButton* s, MenuButton* d, 
    MenuButton* u, MenuButton* c) : 
    navigator(navigator), 
    samplePeriod_us(samplePeriod_us)
{
    buttons.push_back(s);
    buttons.push_back(d);
    buttons.push_back(u);
    buttons.push_back(c);
    init();
}

void ButtonListener::init()
{
    ticker.attach_us(callback(this, &ButtonListener::isr), 500000);
}

void ButtonListener::isr()
{
    printf("in isr\n");
}

我將附加isr()方法創建一個中斷,以便將文本發送到終端窗口。 但是由於某種原因,它不起作用。

如果在構造函數的init()方法之前或之后放置printf()語句, printf()打印出printf()的文本,但不會打印isr()中的文本。

有什么幫助嗎?

偶然發現了解決方案。 我有MyClass實例化ButtonListener 在此類中,我將ButtonListener聲明為指針:

ButtonListener* blistener;

MyClass的構造函數中,我有ButtonListener buttonListener = new ButtonListener(args...) 在將其更改為buttonListener = new ButtonListener(args...)事情解決了。

希望對其他人有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM