Code: Select all
#include "ch.h"
#include "hal.h"
#include "test.h"
#define NUM_BUFFERS 16
static mailbox_t serial2mb;
static msg_t serial2mb_queue[NUM_BUFFERS];
event_source_t mb_event_source;
static THD_WORKING_AREA(waSerial2Thread, 128);
static THD_FUNCTION(Serial2Thread, arg) {
event_listener_t mb_listener;
(void) arg;
/* Mailbox event */
chEvtRegisterMask(
&mb_event_source,
&mb_listener,
EVENT_MASK(0));
while (true) {
/* Waiting for any of the events we're registered on.*/
eventmask_t evt = chEvtWaitAny(ALL_EVENTS);
/* Mailbox event */
if (evt & EVENT_MASK(0)) {
msg_t tmp;
chMBFetch(&serial2mb, &tmp, TIME_INFINITE);
}
}
}
/*
* Application entry point.
*/
int main(void) {
halInit();
chSysInit();
chMBObjectInit(&serial2mb, serial2mb_queue, NUM_BUFFERS);
/*
* Activates the serial driver 2 using the driver default configuration.
*/
sdStart(&SD2, NULL);
chThdCreateStatic(waSerial2Thread, sizeof(waSerial2Thread), NORMALPRIO, Serial2Thread, NULL);
chMBPost(&serial2mb, (msg_t)'T', TIME_INFINITE);
/* This is causing issues */
chEvtBroadcast(&mb_event_source);
while (true) {
palTogglePad(GPIOA, GPIOA_LED_GREEN);
chThdSleepMilliseconds(500);
}
}