Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define CYCLEIN250NANOSEC 42
- #define STK_CTRL 0xE000E010
- #define STK_LOAD (STK_CTRL+4)
- #define STK_VAL (STK_CTRL+8)
- void startup(void) __attribute__((naked)) __attribute__((section (".start_section")) );
- void startup ( void )
- {
- __asm volatile(
- " LDR R0,=0x2001C000\n" /* set stack */
- " MOV SP,R0\n"
- " BL main\n" /* call main */
- "_exit: B .\n" /* never return */
- ) ;
- }
- void delay_250ns(void){
- *((volatile unsigned long *) STK_CTRL) = 0;
- *((volatile unsigned long *) STK_LOAD) = CYCLEIN250NANOSEC;
- *((volatile unsigned long *) STK_VAL) = 0;
- *((volatile unsigned long *) STK_CTRL) = 5;
- while( (*((volatile unsigned long *) STK_CTRL) & (1<<16)) == 0 ){
- /* Do nothing, if countflag is 0 otherwise continue */
- }
- *((volatile unsigned long *) STK_CTRL) = 0;
- }
- void delay_mikro( unsigned int us){
- int i;
- for( i=0; i < us*4; i++){
- delay_250ns();
- }
- }
- void delay_milli( unsigned int ms){
- ms *= 1000;
- #ifdef SIMULATOR
- ms = ms /1000;
- ms++;
- #endif
- delay_mikro(ms);
- }
- void init_app(void) {
- * ( (unsigned long *) 0x40021000 ) = 0x55555555;
- }
- void main(void)
- {
- init_app();
- while (1)
- {
- * ( (unsigned char *) 0x40021014 ) = 0;
- delay_milli(10);
- * ( (unsigned char *) 0x40021014 ) = 0xFF;
- delay_milli(10);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement