Created
March 16, 2018 15:19
-
-
Save hocarm/0de92baeff1d273f83c7d9066af29236 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 0.Documentation Section | |
// main.c | |
// Runs on LM4F120 or TM4C123 | |
// C6_InputOutput, Input from PF4, output to PF2 (blue LED) | |
// Authors: Daniel Valvano, Jonathan Valvano and Ramesh Yerraballi | |
// Date: July 8, 2013 | |
// LaunchPad built-in hardware | |
// SW1 left switch is negative logic PF4 on the Launchpad | |
// SW2 right switch is negative logic PF0 on the Launchpad | |
// red LED connected to PF1 on the Launchpad | |
// blue LED connected to PF2 on the Launchpad | |
// green LED connected to PF3 on the Launchpad | |
// 1. Pre-processor Directives Section | |
// Constant declarations to access port registers using | |
// symbolic names instead of addresses | |
#define GPIO_PORTF_DATA_R (*((volatile unsigned long *)0x400253FC)) | |
#define GPIO_PORTF_DIR_R (*((volatile unsigned long *)0x40025400)) | |
#define GPIO_PORTF_AFSEL_R (*((volatile unsigned long *)0x40025420)) | |
#define GPIO_PORTF_PUR_R (*((volatile unsigned long *)0x40025510)) | |
#define GPIO_PORTF_DEN_R (*((volatile unsigned long *)0x4002551C)) | |
#define GPIO_PORTF_LOCK_R (*((volatile unsigned long *)0x40025520)) | |
#define GPIO_PORTF_CR_R (*((volatile unsigned long *)0x40025524)) | |
#define GPIO_PORTF_AMSEL_R (*((volatile unsigned long *)0x40025528)) | |
#define GPIO_PORTF_PCTL_R (*((volatile unsigned long *)0x4002552C)) | |
#define SYSCTL_RCGC2_R (*((volatile unsigned long *)0x400FE108)) | |
// 2. Declarations Section | |
// Global Variables | |
// Function Prototypes | |
void PortF_Init(void); | |
// 3. Subroutines Section | |
// MAIN: Mandatory for a C Program to be executable | |
int main(void){ | |
while(1){ | |
} | |
} | |
// Subroutine to initialize port F pins for input and output | |
// PF4 is input SW1 and PF2 is output Blue LED | |
// Inputs: None | |
// Outputs: None | |
// Notes: ... | |
void PortF_Init(void){ volatile unsigned long delay; | |
SYSCTL_RCGC2_R |= 0x00000020; // 1) F clock | |
delay = SYSCTL_RCGC2_R; // delay | |
GPIO_PORTF_LOCK_R = 0x4C4F434B; // 2) unlock PortF PF0 | |
GPIO_PORTF_CR_R = 0x1F; // allow changes to PF4-0 | |
GPIO_PORTF_AMSEL_R = 0x00; // 3) disable analog function | |
GPIO_PORTF_PCTL_R = 0x00000000; // 4) GPIO clear bit PCTL | |
GPIO_PORTF_DIR_R = 0x0E; // 5) PF4,PF0 input, PF3,PF2,PF1 output | |
GPIO_PORTF_AFSEL_R = 0x00; // 6) no alternate function | |
GPIO_PORTF_PUR_R = 0x11; // enable pullup resistors on PF4,PF0 | |
GPIO_PORTF_DEN_R = 0x1F; // 7) enable digital pins PF4-PF0 | |
} | |
// Color LED(s) PortF | |
// dark --- 0 | |
// red R-- 0x02 | |
// blue --B 0x04 | |
// green -G- 0x08 | |
// yellow RG- 0x0A | |
// sky blue -GB 0x0C | |
// white RGB 0x0E | |
// pink R-B 0x06 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment