stm32rcos
 
読み取り中…
検索中…
一致する文字列を見つけられません
stm32rcos::peripheral::Can< Handle > クラステンプレート

#include <can.hpp>

stm32rcos::peripheral::Can< Handle > の継承関係図
stm32rcos::peripheral::Can< Handle > 連携図

公開メンバ関数

bool start () override
 
bool stop () override
 
bool transmit (const CanMessage &msg, uint32_t timeout) override
 
bool attach_rx_queue (const CanFilter &filter, core::Queue< CanMessage > &queue) override
 
bool detach_rx_queue (const core::Queue< CanMessage > &queue) override
 
- 基底クラス stm32rcos::peripheral::CanBase に属する継承公開メンバ関数
virtual ~CanBase ()
 

詳解

template<class Handle>
class stm32rcos::peripheral::Can< Handle >
#include <cstdio>
extern UART_HandleTypeDef huart2;
extern FDCAN_HandleTypeDef hfdcan1;
extern "C" void main_thread(void *) {
using namespace stm32rcos::core;
using namespace stm32rcos::peripheral;
Uart uart2(&huart2);
enable_stdout(uart2);
Can can1(&hfdcan1);
// 受信フィルター、受信キューの設定
CanFilter rx_filter = {
.id = 0x0,
.mask = 0x0,
.ide = false,
};
Queue<CanMessage> rx_queue(10);
can1.attach_rx_queue(rx_filter, rx_queue);
// CAN通信開始
can1.start();
// 送信するメッセージの作成
CanMessage tx_message = {
.id = 0x3,
.ide = false,
.dlc = 1,
.data = {0x0},
};
for (int i = 0; i < 10; ++i) {
// 送信
can1.transmit(tx_message, osWaitForever);
tx_message.data[0]++;
}
while (true) {
// 受信
CanMessage rx_message;
if (rx_queue.pop(rx_message, osWaitForever)) {
printf("id: %d, data: %d\r\n", (int)rx_message.id,
(int)rx_message.data[0]);
}
osDelay(10);
}
}
Definition queue.hpp:13
Definition can.hpp:77
Definition uart.hpp:63
Definition mutex.hpp:10
Definition can.hpp:18
bool enable_stdout(UartBase &uart)
Definition can_filter.hpp:8
Definition can_message.hpp:9
std::array< uint8_t, 8 > data
Definition can_message.hpp:13
uint32_t id
Definition can_message.hpp:10

関数詳解

◆ attach_rx_queue()

template<class Handle>
bool stm32rcos::peripheral::Can< Handle >::attach_rx_queue ( const CanFilter & filter,
core::Queue< CanMessage > & queue )
overridevirtual

stm32rcos::peripheral::CanBaseを実装しています。

◆ detach_rx_queue()

template<class Handle>
bool stm32rcos::peripheral::Can< Handle >::detach_rx_queue ( const core::Queue< CanMessage > & queue)
overridevirtual

stm32rcos::peripheral::CanBaseを実装しています。

◆ start()

template<class Handle>
bool stm32rcos::peripheral::Can< Handle >::start ( )
overridevirtual

stm32rcos::peripheral::CanBaseを実装しています。

◆ stop()

template<class Handle>
bool stm32rcos::peripheral::Can< Handle >::stop ( )
overridevirtual

stm32rcos::peripheral::CanBaseを実装しています。

◆ transmit()

template<class Handle>
bool stm32rcos::peripheral::Can< Handle >::transmit ( const CanMessage & msg,
uint32_t timeout )
overridevirtual

stm32rcos::peripheral::CanBaseを実装しています。


このクラス詳解は次のファイルから抽出されました: