[英]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.