forked from meshack-mbuvi/SPH336_Jan2015
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgpio.h
59 lines (48 loc) · 1.52 KB
/
gpio.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*
* gpio.h
*
* Created on: Mar 2, 2015
* Author: karibe
*/
#ifndef GPIO_H_
#define GPIO_H_
#include "Mk60.h"
void gpio_init(void);
extern void put(uint8_t *s);
extern void SystemInit(void);
/*
brief PORTA initialization
*/
void gpio_init(void)
{
//PTA19 as a button input
PA->PCR[19].mux = 0x01; //PortA pin 19 as GPIO
PA->PCR[19].irqc = 0xA; //Interrupt on falling edge
PA->PCR[19].pe = 0x01; //pull-up enable
PA->PCR[19].ps = 0x01; //select internal pull-up resistor
//PortA pins 10, 11, 28 and 29 as alt1=GPIO
PA->PCR[10].mux = 0x01;
PA->PCR[11].mux = 0x01;
PA->PCR[28].mux = 0x01;
PA->PCR[29].mux = 0x01;
//PTE8 and PTE9 as UART5
PE->PCR[8].mux = 0x0; //clear default function
PE->PCR[9].mux = 0x0; //clear default function
PE->PCR[8].mux = 0x3; //alt3 = UART5_TX
PE->PCR[9].mux = 0x3; //alt3 = UART5_RX
//GPIO port data direction Port A as output for LEDs (pin 11, 28, 29 and 10), Port E UART5(PTE8 TX, PTE9 RX)
GPIOA->PDDR.bit_reg.bit11 = out;
GPIOA->PDDR.bit_reg.bit28 = out;
GPIOA->PDDR.bit_reg.bit29 = out;
GPIOA->PDDR.bit_reg.bit10 = out;
GPIOE->PDDR.bit_reg.bit8 = out; //UART5_TX is an output
//No need to configure GPIO for as an input, by default all pins are inputs
//GPIOA->PDDR.bit_reg.bit19 = IN;
//GPIOE->PDDR.bit_reg.bit9 = IN //UART5_RX is an input
}
void PORTA_IRQHandler(void)
{
PA->ISFR.word_reg = 0xFFFFFFFF; //clear Interrupt Status Register by writing ones in all bits --- why???
//toggle_LED2(); //toggle the second LED to indicate interrupt serviced
}
#endif /* GPIO_H_ */