Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "msp.h"
- #define SYSTICK_STCSR (*((volatile unsigned long *)0xE000E010))
- #define SYSTICK_STRVR (*((volatile unsigned long *)0xE000E014))
- #define SYSTICK_STCVR (*((volatile unsigned long *)0xE000E018))
- void SysTick_Init(void);
- void SysTick_wait(uint32_t delay);
- void SysTick_wait1ms(uint32_t delay);
- void Port_Init(void);
- void UART0_init(void);
- int main(void) {
- SysTick_Init();
- Port_Init();
- UART0_init();
- while (1) {
- P2OUT |= 0x01;
- SysTick_wait1ms(200);
- P2OUT &= ~0x01;
- SysTick_wait1ms(200);
- }
- }
- void SysTick_Init(void) {
- SYSTICK_STCSR = 0;
- SYSTICK_STRVR = 0x00FFFFFF;
- SYSTICK_STCVR = 0;
- SYSTICK_STCSR = 0x00000005;
- }
- void SysTick_wait(uint32_t delay) {
- SYSTICK_STRVR = delay - 1;
- SYSTICK_STCVR = 0;
- while ((SYSTICK_STCSR & 0x00010000) == 0) {
- }
- }
- void SysTick_wait1ms(uint32_t delay) {
- uint32_t i;
- for (i = 0; i < delay; i++) {
- SysTick_wait(3000);
- }
- }
- void Port_Init(void) {
- P5SEL1 = 0x00;
- P5SEL0 = 0x00;
- P5DIR = 0x00;
- P5REN = 0x01;
- P5OUT = 0x01;
- P5IES = 0x01;
- P5IFG = 0;
- P5IE = 0x01;
- P6SEL1 = 0x00;
- P6SEL0 = 0x00;
- P6DIR = 0x00;
- P6REN = 0x01;
- P6OUT = 0x01;
- P6IES = 0x01;
- P6IFG = 0;
- P6IE = 0x01;
- P2SEL1 = 0x00;
- P2SEL0 = 0x00;
- P2DIR = 0x07;
- P2OUT = 0x00;
- NVIC_SetPriority(PORT5_IRQn,2);
- NVIC_SetPriority(PORT6_IRQn,0);
- NVIC_EnableIRQ(PORT5_IRQn);
- NVIC_EnableIRQ(PORT6_IRQn);
- __enable_irq();
- }
- void PORT5_IRQHandler(void){
- char buff[10] = "SW1 Active";
- for (int i=0;i<10;i++){
- while (!(EUSCI_A0->IFG & 0x02));
- EUSCI_A0->TXBUF = buff[i];
- }
- while (!(EUSCI_A0->IFG & 0x02));
- EUSCI_A0->TXBUF = 0x0a;
- for (int i=0; i<3; i++){
- P2OUT = 0x04;
- SysTick_wait1ms(500);
- P2OUT &= ~0x04;
- SysTick_wait1ms(500);
- }
- P5IFG &= 0x00;
- }
- void PORT6_IRQHandler(void){
- char buff[10] = "SW2 Active";
- for (int i=0;i<10;i++){
- while (!(EUSCI_A0->IFG & 0x02));
- EUSCI_A0->TXBUF = buff[i];
- }
- while (!(EUSCI_A0->IFG & 0x02));
- EUSCI_A0->TXBUF = 0x0a;
- for (int i=0; i<3; i++){
- P2OUT = 0x02;
- SysTick_wait1ms(500);
- P2OUT &= ~0x02;
- SysTick_wait1ms(500);
- }
- P6IFG &= 0x00;
- }
- void UART0_init(void){
- EUSCI_A0->CTLW0 |= 1;
- EUSCI_A0->MCTLW = 0;
- EUSCI_A0->CTLW0 = 0x0081;
- EUSCI_A0->BRW = 312;
- P1->SEL0 |= 0x0C;
- P1->SEL1 &= ~0x0C;
- EUSCI_A0->CTLW0 &= ~0x0001;
- }
Advertisement
Add Comment
Please, Sign In to add comment