Ryo Od
/
Nucleo_rtos_SPISlave_Test
SPI Slave Test.
Diff: main.cpp
- Revision:
- 1:ba17cd3b6ecf
- Parent:
- 0:4cc5b11f7d91
- Child:
- 2:46e25b11a043
--- a/main.cpp Tue Sep 27 06:00:48 2016 +0000 +++ b/main.cpp Tue Sep 27 09:46:20 2016 +0000 @@ -5,13 +5,26 @@ #define SPI_SPEED (10000000) BusOut Leds(PA_10, PB_3, PB_5, PB_4, PB_10, PA_8); +DigitalOut StepChangePin(PC_7); SPISlave SpiS(PA_7, PA_6, PA_5, PA_4); // mosi, miso, sclk, ssel +unsigned int step = 0; + +void stepUp(void const* arg) +{ + step++; + + // Slaveにinterruptをかける。 + StepChangePin.write(1); + StepChangePin.write(0); +} + int main() { printf("\r\n\nNucleo rtos SPISlave Test..\r\n"); + // Setup LED for (int i = 0; i < 5; i++) { Leds.write(0x3f); Thread::wait(100); @@ -19,17 +32,20 @@ Thread::wait(100); } + // Setup SPISlave SpiS.format(8, 0); SpiS.frequency(SPI_SPEED); - unsigned int count = 0; + // RtosTimer + RtosTimer stepTimer(stepUp, osTimerPeriodic, (void *)0); + stepTimer.start(250); // BPM:60 + SpiS.reply(0); while(1) { if(SpiS.receive()) { int v = SpiS.read(); // Read byte from master Leds.write(v); - SpiS.reply(count % 16); - count++; + SpiS.reply(step % 16); } } }