📄 test3b.c
字号:
#include "pioLib.h"#define MAX_TEST_CHANNELS 3#define PIO_DONE 255MSG_Q_ID msgQId;STATUS test3B (testFunc, arg) FUNCPTR testFunc; int arg; { int tid; STATUS testBTask(); int i; PIO_MSG_Q_DATA msgQData; pioInit (0x3e); if ((msgQId = msgQCreate (100, sizeof(PIO_MSG_Q_DATA), MSG_Q_FIFO)) == NULL) return (ERROR); for (i=0; i<MAX_TEST_CHANNELS; i++) { if (pioSetInputMode (PIO_PORT_A, i, PIO_TYPE_POLL, PIO_ACTION_MSG_Q_PUT, PIO_STATE_CHANGED, msgQId) == ERROR) return (ERROR); } if ((tid = taskSpawn ("tTestB", 200, 0, 5000, testBTask)) == ERROR) return (ERROR); if (testFunc) { (*testFunc)(arg); taskDelay (2); for (i=0; i<MAX_TEST_CHANNELS; i++) { if (pioSetInputMode (PIO_PORT_A, i, PIO_TYPE_IGNORE, PIO_ACTION_MSG_Q_PUT, PIO_STATE_CHANGED, msgQId) == ERROR) return (ERROR); } msgQData.port = PIO_DONE; if (msgQSend (msgQId, &msgQData, sizeof(PIO_MSG_Q_DATA), WAIT_FOREVER, MSG_PRI_NORMAL) == ERROR) return (ERROR); } return (OK); }STATUS testBTask () { PIO_MSG_Q_DATA msgQData; FOREVER { if (msgQReceive (msgQId, &msgQData, sizeof(PIO_MSG_Q_DATA), WAIT_FOREVER) == ERROR) return (ERROR); if (msgQData.port == PIO_DONE) { if (msgQDelete (msgQId) == ERROR) return (ERROR); return (OK); } pioSet (PIO_PORT_B, msgQData.channel, msgQData.state); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -