Sarik_Kumpan

blink and delay and slide

Nov 29th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.39 KB | None | 0 0
  1. #include "msp.h"
  2. #define SYSTICK_STCSR (*((volatile unsigned long *)0xE000E010))
  3. #define SYSTICK_STRVR (*((volatile unsigned long *)0xE000E014))
  4. #define SYSTICK_STCVR (*((volatile unsigned long *)0xE000E018))
  5.    
  6. void SysTick_Init(void);
  7. void SysTick_wait(uint32_t delay);
  8. void SysTick_wait1ms(uint32_t delay);
  9. void Port_Init(void);
  10. unsigned char led;
  11.  
  12. int main(void) {
  13.     SysTick_Init();
  14.     Port_Init();
  15.     led = 0x01;
  16.     while (1) {
  17.         P2OUT = led;
  18.         SysTick_wait1ms(1000);
  19.         P2OUT = 0x00;
  20.         SysTick_wait1ms(1000);
  21.     }
  22. }
  23.  
  24. void SysTick_Init(void) {
  25.     SYSTICK_STCSR = 0;
  26.     SYSTICK_STRVR = 0x00FFFFFF;
  27.     SYSTICK_STCVR = 0;
  28.     SYSTICK_STCSR = 0x00000005;
  29. }
  30.  
  31. void SysTick_wait(uint32_t delay) {
  32.     SYSTICK_STRVR = delay - 1;
  33.     SYSTICK_STCVR = 0;
  34.     while ((SYSTICK_STCSR & 0x00010000) == 0) {
  35.     }
  36. }
  37.  
  38. void SysTick_wait1ms(uint32_t delay) {
  39.     uint32_t i;
  40.     for (i = 0; i < delay; i++) {
  41.         SysTick_wait(3000);
  42.     }
  43. }
  44.  
  45. void Port_Init(void) {
  46.     P1SEL1 = 0x00;
  47.     P1SEL0 = 0x00;
  48.     P1DIR = 0x00;
  49.     P1REN = 0x12;
  50.     P1OUT = 0x12;
  51.     P1IES = 0x12;
  52.     P1IFG = 0;
  53.     P1IE = 0x12;
  54.     P2SEL1 = 0x00;
  55.     P2SEL0 = 0x00;
  56.     P2DIR = 0x07;
  57.     P2OUT = 0x00;
  58.     NVIC_EnableIRQ(PORT1_IRQn);
  59.     __enable_irq();
  60. }
  61.  
  62. void PORT1_IRQHandler(void){
  63.     if (P1IFG&0x02){
  64.         led = led << 1;
  65.             if (led == 0x08){
  66.                 led = 0x01;
  67.             }
  68.         }
  69.     if (P1IFG&0x10){
  70.         led = led >> 1;
  71.             if (led == 0x00){
  72.                 led = 0x04;
  73.             }
  74.         }
  75.     P1IFG &= 0x00;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment