Skip to content

Commit dd45335

Browse files
Added shiftIn to F1 and F4
1 parent 3759f2e commit dd45335

File tree

4 files changed

+54
-0
lines changed

4 files changed

+54
-0
lines changed

STM32F1/cores/maple/io.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,4 +160,6 @@ uint16 analogRead(uint8 pin);
160160
*/
161161
void shiftOut(uint8 dataPin, uint8 clockPin, uint8 bitOrder, uint8 value);
162162

163+
uint32 shiftIn( uint32 ulDataPin, uint32 ulClockPin, uint32 ulBitOrder );
164+
163165
#endif

STM32F1/cores/maple/wirish_shift.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,28 @@ void shiftOut(uint8 dataPin, uint8 clockPin, uint8 bitOrder, uint8 value) {
3535
gpio_toggle_bit(PIN_MAP[clockPin].gpio_device, PIN_MAP[clockPin].gpio_bit);// togglePin(clockPin);
3636
}
3737
}
38+
39+
uint32_t shiftIn( uint32_t ulDataPin, uint32_t ulClockPin, uint32_t ulBitOrder )
40+
{
41+
uint8_t value = 0 ;
42+
uint8_t i ;
43+
44+
45+
for ( i=0 ; i < 8 ; ++i )
46+
{
47+
digitalWrite( ulClockPin, HIGH ) ;
48+
49+
if ( ulBitOrder == LSBFIRST )
50+
{
51+
value |= digitalRead( ulDataPin ) << i ;
52+
}
53+
else
54+
{
55+
value |= digitalRead( ulDataPin ) << (7 - i) ;
56+
}
57+
58+
digitalWrite( ulClockPin, LOW ) ;
59+
}
60+
61+
return value ;
62+
}

STM32F4/cores/maple/io.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,5 +218,7 @@ uint8 waitForButtonPress(uint32 timeout_millis=0);
218218
*/
219219
void shiftOut(uint8 dataPin, uint8 clockPin, uint8 bitOrder, uint8 value);
220220

221+
uint32 shiftIn( uint32 ulDataPin, uint32 ulClockPin, uint32 ulBitOrder );
222+
221223
#endif
222224

STM32F4/cores/maple/wirish_shift.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,28 @@ void shiftOut(uint8 dataPin, uint8 clockPin, uint8 bitOrder, uint8 val) {
3838
digitalWrite(clockPin, LOW);
3939
}
4040
}
41+
42+
uint32 shiftIn( uint32 ulDataPin, uint32 ulClockPin, uint32 ulBitOrder )
43+
{
44+
uint8_t value = 0 ;
45+
uint8_t i ;
46+
47+
48+
for ( i=0 ; i < 8 ; ++i )
49+
{
50+
digitalWrite( ulClockPin, HIGH ) ;
51+
52+
if ( ulBitOrder == LSBFIRST )
53+
{
54+
value |= digitalRead( ulDataPin ) << i ;
55+
}
56+
else
57+
{
58+
value |= digitalRead( ulDataPin ) << (7 - i) ;
59+
}
60+
61+
digitalWrite( ulClockPin, LOW ) ;
62+
}
63+
64+
return value ;
65+
}

0 commit comments

Comments
 (0)