Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #define CYCLEIN250NANOSEC 42
  2. #define STK_CTRL 0xE000E010
  3. #define STK_LOAD (STK_CTRL+4)
  4. #define STK_VAL (STK_CTRL+8)
  5.  
  6.  
  7. void startup(void) __attribute__((naked)) __attribute__((section (".start_section")) );
  8. void startup ( void )
  9. {
  10. __asm volatile(
  11. " LDR R0,=0x2001C000\n" /* set stack */
  12. " MOV SP,R0\n"
  13. " BL main\n" /* call main */
  14. "_exit: B .\n" /* never return */
  15. ) ;
  16. }
  17.  
  18. void delay_250ns(void){
  19. *((volatile unsigned long *) STK_CTRL) = 0;
  20. *((volatile unsigned long *) STK_LOAD) = CYCLEIN250NANOSEC;
  21. *((volatile unsigned long *) STK_VAL) = 0;
  22. *((volatile unsigned long *) STK_CTRL) = 5;
  23.  
  24. while( (*((volatile unsigned long *) STK_CTRL) & (1<<16)) == 0 ){
  25. /* Do nothing, if countflag is 0 otherwise continue */
  26. }
  27.  
  28. *((volatile unsigned long *) STK_CTRL) = 0;
  29. }
  30.  
  31. void delay_mikro( unsigned int us){
  32. int i;
  33. for( i=0; i < us*4; i++){
  34. delay_250ns();
  35. }
  36. }
  37.  
  38. void delay_milli( unsigned int ms){
  39. ms *= 1000;
  40.  
  41. #ifdef SIMULATOR
  42. ms = ms /1000;
  43. ms++;
  44. #endif
  45.  
  46. delay_mikro(ms);
  47. }
  48.  
  49. void init_app(void) {
  50. * ( (unsigned long *) 0x40021000 ) = 0x55555555;
  51. }
  52.  
  53. void main(void)
  54. {
  55. init_app();
  56. while (1)
  57. {
  58. * ( (unsigned char *) 0x40021014 ) = 0;
  59. delay_milli(10);
  60. * ( (unsigned char *) 0x40021014 ) = 0xFF;
  61. delay_milli(10);
  62. }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement