#define DEBUG 0
uint32_t Pins[] = {LL_GPIO_PIN_0, LL_GPIO_PIN_1,
LL_GPIO_PIN_2, LL_GPIO_PIN_3, LL_GPIO_PIN_4,
LL_GPIO_PIN_5, LL_GPIO_PIN_6, LL_GPIO_PIN_7};
void write8(uint8_t bytes) {
uint32_t PinMask = 0;
for(uint8_t bits=0;bits<8;bits++) {
uint8_t mask = 1<<bits;
#if 0
Serial.print("mask=");
Serial.print(mask,HEX);
Serial.print(" ");
Serial.println((bytes & mask),
HEX);
#endif
if ( (bytes & mask) != 0 ) PinMask
= PinMask + Pins[bits];
}
#if 0
Serial.print("bytes=");
Serial.print(bytes,HEX);
Serial.print(" PinMask=");
Serial.println(PinMask,HEX);
#endif
LL_GPIO_WriteOutputPort(GPIOA, PinMask);
}
void setup() {
Serial.begin(115200);
pinMode(PA0, OUTPUT);
pinMode(PA1, OUTPUT);
pinMode(PA2, OUTPUT);
pinMode(PA3, OUTPUT);
pinMode(PA4, OUTPUT);
pinMode(PA5, OUTPUT);
pinMode(PA6, OUTPUT);
pinMode(PA7, OUTPUT);
write8(0x0);
}
void loop(){
uint8_t bytes = 0;
uint32_t smill = millis();
for(uint32_t i=0;i<100000;i++) {
if (DEBUG) {
Serial.print("bytes=");
Serial.println(bytes, HEX);
delay(100);
}
write8(bytes);
bytes++;
}
uint32_t emill = millis();
Serial.print("Elasped=");
Serial.println(emill - smill);
} |