Initialize clocks where they're actually needed.

This commit is contained in:
László Monda
2016-10-05 23:12:22 +02:00
parent 4830c98d50
commit 4742a0c661
6 changed files with 32 additions and 28 deletions

View File

@@ -44,11 +44,6 @@ void InitI2c() {
void InitPeripherials(void) void InitPeripherials(void)
{ {
CLOCK_EnableClock(kCLOCK_PortA);
CLOCK_EnableClock(kCLOCK_PortB);
CLOCK_EnableClock(kCLOCK_PortC);
CLOCK_EnableClock(kCLOCK_PortD);
InitResetButton(); InitResetButton();
InitTestLed(); InitTestLed();
InitI2c(); InitI2c();

View File

@@ -21,15 +21,10 @@ void LedDriver_WriteRegister(uint8_t i2cAddress, uint8_t reg, uint8_t val)
void LedDriver_EnableAllLeds() void LedDriver_EnableAllLeds()
{ {
PORT_SetPinMux(PORTA, 2U, kPORT_MuxAsGpio); CLOCK_EnableClock(LED_DRIVER_SDB_CLOCK);
PORT_SetPinMux(LED_DRIVER_SDB_PORT, LED_DRIVER_SDB_PIN, kPORT_MuxAsGpio);
gpio_pin_config_t led_config = { GPIO_PinInit(GPIOA, LED_DRIVER_SDB_PIN, &(gpio_pin_config_t){kGPIO_DigitalOutput, 0});
.pinDirection = kGPIO_DigitalOutput, GPIO_WritePinOutput(LED_DRIVER_SDB_GPIO, LED_DRIVER_SDB_PIN, 1);
.outputLogic = 0,
};
GPIO_PinInit(GPIOA, 2U, &led_config);
GPIO_SetPinsOutput(GPIOA, 0 << 2U);
uint8_t ledDriverAddresses[] = {I2C_ADDRESS_LED_DRIVER_LEFT, I2C_ADDRESS_LED_DRIVER_RIGHT}; uint8_t ledDriverAddresses[] = {I2C_ADDRESS_LED_DRIVER_LEFT, I2C_ADDRESS_LED_DRIVER_RIGHT};

View File

@@ -11,6 +11,11 @@
// Macros: // Macros:
#define LED_DRIVER_SDB_PORT PORTA
#define LED_DRIVER_SDB_GPIO GPIOA
#define LED_DRIVER_SDB_CLOCK kCLOCK_PortA
#define LED_DRIVER_SDB_PIN 2
#define LED_DRIVER_REGISTER_SHUTDOWN 0x0A #define LED_DRIVER_REGISTER_SHUTDOWN 0x0A
#define LED_DRIVER_REGISTER_FRAME 0xFD #define LED_DRIVER_REGISTER_FRAME 0xFD

View File

@@ -2,7 +2,7 @@
#include "fsl_port.h" #include "fsl_port.h"
void InitResetButton() { void InitResetButton() {
CLOCK_EnableClock(RESET_BUTTON_CLOCK);
PORT_SetPinConfig(RESET_BUTTON_PORT, RESET_BUTTON_PIN, PORT_SetPinConfig(RESET_BUTTON_PORT, RESET_BUTTON_PIN,
&(port_pin_config_t){.pullSelect=kPORT_PullUp, .mux=kPORT_MuxAsGpio}); &(port_pin_config_t){.pullSelect=kPORT_PullUp, .mux=kPORT_MuxAsGpio});
CLOCK_EnableClock(RESET_BUTTON_CLOCK);
} }

View File

@@ -3,7 +3,7 @@
extern void InitTestLed() extern void InitTestLed()
{ {
CLOCK_EnableClock(TEST_LED_CLOCK);
PORT_SetPinMux(TEST_LED_GPIO_PORT, TEST_LED_GPIO_PIN, kPORT_MuxAsGpio); PORT_SetPinMux(TEST_LED_GPIO_PORT, TEST_LED_GPIO_PIN, kPORT_MuxAsGpio);
GPIO_PinInit(TEST_LED_GPIO, TEST_LED_GPIO_PIN, &(gpio_pin_config_t){kGPIO_DigitalOutput, 0}); GPIO_PinInit(TEST_LED_GPIO, TEST_LED_GPIO_PIN, &(gpio_pin_config_t){kGPIO_DigitalOutput, 0});
CLOCK_EnableClock(TEST_LED_CLOCK);
} }

View File

@@ -40,6 +40,7 @@ static usb_keyboard_report_t UsbKeyboardReport;
typedef struct { typedef struct {
PORT_Type *port; PORT_Type *port;
GPIO_Type *gpio; GPIO_Type *gpio;
clock_ip_name_t clock;
uint32_t pin; uint32_t pin;
} pin_t; } pin_t;
@@ -47,21 +48,21 @@ typedef struct {
#define KEYBOARD_MATRIX_ROWS_NUM 5 #define KEYBOARD_MATRIX_ROWS_NUM 5
pin_t keyboardMatrixCols[] = { pin_t keyboardMatrixCols[] = {
{PORTA, GPIOA, 5}, {PORTA, GPIOA, kCLOCK_PortA, 5},
{PORTB, GPIOB, 3}, {PORTB, GPIOB, kCLOCK_PortB, 3},
{PORTB, GPIOB, 16}, {PORTB, GPIOB, kCLOCK_PortB, 16},
{PORTB, GPIOB, 17}, {PORTB, GPIOB, kCLOCK_PortB, 17},
{PORTB, GPIOB, 18}, {PORTB, GPIOB, kCLOCK_PortB, 18},
{PORTA, GPIOA, 1}, {PORTA, GPIOA, kCLOCK_PortA, 1},
{PORTB, GPIOB, 0}, {PORTB, GPIOB, kCLOCK_PortB, 0},
}; };
pin_t keyboardMatrixRows[] = { pin_t keyboardMatrixRows[] = {
{PORTA, GPIOA, 12}, {PORTA, GPIOA, kCLOCK_PortA, 12},
{PORTA, GPIOA, 13}, {PORTA, GPIOA, kCLOCK_PortA, 13},
{PORTC, GPIOC, 0}, {PORTC, GPIOC, kCLOCK_PortC, 0},
{PORTB, GPIOB, 19}, {PORTB, GPIOB, kCLOCK_PortB, 19},
{PORTD, GPIOD, 6}, {PORTD, GPIOD, kCLOCK_PortD, 6},
}; };
static usb_status_t UsbKeyboardAction(void) static usb_status_t UsbKeyboardAction(void)
@@ -70,6 +71,14 @@ static usb_status_t UsbKeyboardAction(void)
UsbKeyboardReport.modifiers = 0; UsbKeyboardReport.modifiers = 0;
UsbKeyboardReport.reserved = 0; UsbKeyboardReport.reserved = 0;
for (uint8_t i=0; i<KEYBOARD_MATRIX_COLS_NUM; i++) {
CLOCK_EnableClock(keyboardMatrixCols[i].clock);
}
for (uint8_t i=0; i<KEYBOARD_MATRIX_ROWS_NUM; i++) {
CLOCK_EnableClock(keyboardMatrixRows[i].clock);
}
for (uint8_t scancode_idx=0; scancode_idx<USB_KEYBOARD_MAX_KEYS; scancode_idx++) { for (uint8_t scancode_idx=0; scancode_idx<USB_KEYBOARD_MAX_KEYS; scancode_idx++) {
UsbKeyboardReport.scancodes[scancode_idx] = 0; UsbKeyboardReport.scancodes[scancode_idx] = 0;
} }