Replaced setPin and resetPin by gpio_write_bit

This commit is contained in:
rogerclarkmelbourne 2015-05-15 21:34:44 +10:00
parent c84d51e16e
commit 2c575f56b0
4 changed files with 18 additions and 11 deletions

View File

@ -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() {

View File

@ -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);

View File

@ -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