From 2c575f56b076fce178aadb7f28fdf12aec4391f4 Mon Sep 17 00:00:00 2001 From: rogerclarkmelbourne Date: Fri, 15 May 2015 21:34:44 +1000 Subject: [PATCH] Replaced setPin and resetPin by gpio_write_bit --- .../STM32F1/binaries/maple_mini_boot20.bin | Bin 7040 -> 7028 bytes usb_bootloader/STM32F1/hardware.c | 17 +++++++++++------ usb_bootloader/STM32F1/hardware.h | 6 ++++-- usb_bootloader/STM32F1/usb.c | 6 +++--- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/usb_bootloader/STM32F1/binaries/maple_mini_boot20.bin b/usb_bootloader/STM32F1/binaries/maple_mini_boot20.bin index db404a76c08ecd3db67d66e0776cd01340d16db5..19edd89d61cded24f090db8acbb956ebd64e7390 100644 GIT binary patch delta 560 zcmYL_OK1~O6o${4M>0t#$zai>Db+g@0&S%dL2VR-Bx)YUViyKMkS4nk6oR-=L|c&V zD_0P4qXco$jd2JR$`DF%;i|POH-bB$I}8yupQwkNfeTv$*G9n(drhS;2Vy z`3TAr2i4qN`W6?kMNwFYzZ?XMBs*?WC!qn`8;~rprvrZx4U)C@v{bZ=Y>_StXOYl# z;r!ecKPdM&Gn}IwEFinM2F=R|WazWp9RY}395-J-^q!QyN(KD2iO8ncfK+oS5y%Vp zx2w~%I9A&3!=&022oS{nk9NyF?8zC?f!7x?s1oxZZ~b&N*eKo<@#*ZSJFTUa86sFj#-Es)}x45{0lpy B#r*&P delta 558 zcmYL_O=uHQ5P)ZPv&l=0>Echx53!pRYgGyn{7KY8V#_8WEo~1TC5@+e5OTAMhYAL~ z2$k2HC`!&!*QHREWe-yCMX(+NZAqlmzF;7`3F-Pm4<0_|8)g`0rhR?+#>xuDv{xrk zigYX4CHfwVctBAoo`2I16cja5rdC1*_NT9?z@GPg1&k}I(UjBSMPyZ46|UhJ{VJqp z7koe-b5fib2lL3LHo%-lPzFB9-4Z~N3X$^bCC_EoFIOJ-zag^31}K$mS_EYkj(acA zj2K$@*@JPvDJY;2L*Rfp=t-^zW&*Rd2jl7#BVw)OFL-0&a-1>Y4x1Oki@=`PJA-N) z#GR5i2JDe-G?QsyVSP>X;>i!T`0<|Q>dEWCigeR;7oXCIRKqegrRdq07O*wWw&ip- zkAUrQw`of{9qL<2Et(^IVBUg6&_qS5M{>YgH0mC?U+obM*oz)sJ#4_l;Z}fGwk@Lh zbFR9N`<4~d2#+H+sY^MGN%6V%yHTF=`4??|7C#UCn1*>Epz!yNid}4Bsgjki96NpM z9-f}~%`!vk97Ez(&!|zAbUl30J!e(Bq@L2i#GAdwcS~OWpC#0kinpE44`=t&e#2<8 xXL{591&79toX)P}bj~?S+3DQUHIhM`(f@i4zqcd<32`R%&%-*Rp+5|I#DDE7)g}M{ diff --git a/usb_bootloader/STM32F1/hardware.c b/usb_bootloader/STM32F1/hardware.c index edafbab..81223a1 100644 --- a/usb_bootloader/STM32F1/hardware.c +++ b/usb_bootloader/STM32F1/hardware.c @@ -31,7 +31,7 @@ */ #include "hardware.h" - +/* void setPin(u32 bank, u8 pin) { u32 pinMask = 0x1 << (pin); SET_REG(GPIO_BSRR(bank), pinMask); @@ -41,6 +41,11 @@ void resetPin(u32 bank, u8 pin) { u32 pinMask = 0x1 << (16 + pin); SET_REG(GPIO_BSRR(bank), pinMask); } +*/ +void gpio_write_bit(u32 bank, u8 pin, u8 val) { + val = !val; /* "set" bits are lower than "reset" bits */ + SET_REG(GPIO_BSRR(bank), (1U << pin) << (16 * val)); +} bool readPin(u32 bank, u8 pin) { // todo, implement read @@ -52,18 +57,18 @@ bool readPin(u32 bank, u8 pin) { } void strobePin(u32 bank, u8 pin, u8 count, u32 rate) { - resetPin(bank, pin); + gpio_write_bit( bank,pin,0); u32 c; while (count-- > 0) { for (c = rate; c > 0; c--) { asm volatile("nop"); } - setPin(bank, pin); + gpio_write_bit( bank,pin,1); for (c = rate; c > 0; c--) { asm volatile("nop"); } - resetPin(bank, pin); + gpio_write_bit( bank,pin,0); } } @@ -101,7 +106,7 @@ void setupLED (void) { /* Setup LED pin as output open drain */ SET_REG(LED_BANK_CR,(GET_REG(LED_BANK_CR) & LED_CR_MASK) | LED_CR_MODE); - setPin(LED_BANK, LED); + gpio_write_bit(LED_BANK, LED,1); } void setupBUTTON (void) { @@ -110,7 +115,7 @@ void setupBUTTON (void) { /* Setup button pin as floating input */ SET_REG(BUT_BANK_CR,(GET_REG(BUT_BANK_CR) & BUT_CR_MASK) | BUT_CR_OUTPUT_IN); - setPin(BUTTON_BANK, BUTTON); + gpio_write_bit(BUTTON_BANK, BUTTON,1); } void setupFLASH() { diff --git a/usb_bootloader/STM32F1/hardware.h b/usb_bootloader/STM32F1/hardware.h index 12615e4..bcc9747 100644 --- a/usb_bootloader/STM32F1/hardware.h +++ b/usb_bootloader/STM32F1/hardware.h @@ -169,8 +169,10 @@ typedef struct { } SCB_TypeDef; -void setPin(u32 bank, u8 pin); -void resetPin(u32 bank, u8 pin); +//void setPin(u32 bank, u8 pin); +//void resetPin(u32 bank, u8 pin); +void gpio_write_bit(u32 bank, u8 pin, u8 val); + bool readPin(u32 bank, u8 pin); void strobePin(u32 bank, u8 pin, u8 count, u32 rate); diff --git a/usb_bootloader/STM32F1/usb.c b/usb_bootloader/STM32F1/usb.c index 62c4234..cd4a925 100644 --- a/usb_bootloader/STM32F1/usb.c +++ b/usb_bootloader/STM32F1/usb.c @@ -40,20 +40,20 @@ void setupUSB (void) { /* Setup USB DISC pin as output open drain */ SET_REG(USB_DISC_CR, (GET_REG(USB_DISC_CR) & USB_DISC_CR_MASK) | USB_DISC_CR_OUTPUT_OD); - setPin (USB_DISC_BANK,USB_DISC); + gpio_write_bit(USB_DISC_BANK,USB_DISC,1); /* turn on the USB clock */ pRCC->APB1ENR |= RCC_APB1ENR_USB_CLK; /* initialize the usb application */ - resetPin (USB_DISC_BANK,USB_DISC); /* present ourselves to the host */ + gpio_write_bit(USB_DISC_BANK,USB_DISC,0); /* present ourselves to the host */ usbAppInit(); } #if 0 void usbDsbBus(void) { - setPin(USB_DISC_BANK,USB_DISC); + gpio_write_bit(USB_DISC_BANK,USB_DISC,1); } #endif