⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_viewc.txt

📁 IARSOURCECODE是基于LPC2478嵌入式软件IAR EWARM V4.42的应用实例代码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
000128  e3a0b000          MOV      r11,#0
;;;129    #endif
;;;130    
;;;131    
;;;132        OSView_TmrInit();                                                   /* Initialize the free running timer                        */
00012c  ebfffffe          BL       OSView_TmrInit
;;;133    
;;;134    #if OS_VIEW_COMM_SEL == OS_VIEW_UART_0
;;;135                                                                            /* Compute divisor for desired baud rate                    */
;;;136        p_clk_freq      =   BSP_CPU_PclkFreq(PCLK_UART0);                   /* Get the CPU clock frequency                              */
;;;137    
;;;138        div             =  (INT16U)(((2 * p_clk_freq / 16 / baud_rate) + 1) / 2);
;;;139        divlo           =   div & 0x00FF;                                   /* Split divisor into LOW and HIGH bytes                    */
;;;140        divhi           =  (div >> 8) & 0x00FF;
;;;141        lcr             =   0x03;                                           /* 8 Bits, 1 Stop, No Parity                                */
;;;142    
;;;143        OS_ENTER_CRITICAL();
;;;144                                                                            /* Configure P0.2 & P0.3 for UART0                          */
;;;145        pinsel          = PINSEL0;
;;;146        pinsel         &= 0xFFFFFF0F;
;;;147        pinsel         |= 0x00000050;
;;;148        PINSEL0         = pinsel;
;;;149    
;;;150        U0LCR           =   DEF_BIT_07;                                     /* Set divisor access bit                                   */
;;;151        U0DLL           =   divlo;                                          /* Load divisor                                             */
;;;152        U0DLM           =   divhi;
;;;153        U0LCR           =   lcr;                                            /* Set line control register (Bit 8 is 0)                   */
;;;154        U0IER           =   0x00;                                           /* Disable both Rx and Tx interrupts                        */
;;;155        U0FCR           =   0x07;                                           /* Enable FIFO, flush Rx & Tx                               */
;;;156        OS_EXIT_CRITICAL();
;;;157                                                                            /* VIC UART #1 Initialization                               */
;;;158        VICIntSelect   &= ~(1 << VIC_UART0);                                /* Enable interrupts                                        */
;;;159        VICVectAddr6    =  (INT32U)OSView_RxTxISRHandler;                   /* Set the vector address                                   */
;;;160        VICIntEnable    =  (1 << VIC_UART0);                                /* Enable Interrupts                                        */
;;;161    #endif
;;;162    
;;;163    
;;;164    
;;;165    #if OS_VIEW_COMM_SEL == OS_VIEW_UART_1
;;;166                                                                            /* Compute divisor for desired baud rate                    */
;;;167        p_clk_freq      =   BSP_CPU_PclkFreq(PCLK_UART1);                   /* Get the CPU clock frequency                              */
000130  e3a00004          MOV      r0,#4
000134  ebfffffe          BL       BSP_CPU_PclkFreq
000138  e1a09000          MOV      r9,r0
;;;168    
;;;169        div             =  (INT16U)(((2 * p_clk_freq / 16 / baud_rate) + 1) / 2);
00013c  e1a01089          LSL      r1,r9,#1
000140  e1a00221          LSR      r0,r1,#4
000144  e1a01004          MOV      r1,r4
000148  ebfffffe          BL       __aeabi_uidivmod
00014c  e2800001          ADD      r0,r0,#1
000150  e59f10c8          LDR      r1,|L1.544|
000154  e00150a0          AND      r5,r1,r0,LSR #1
;;;170        divlo           =   div & 0x00FF;                                   /* Split divisor into LOW and HIGH bytes                    */
000158  e20560ff          AND      r6,r5,#0xff
;;;171        divhi           =  (div >> 8) & 0x00FF;
00015c  e1a07445          ASR      r7,r5,#8
;;;172        lcr             =   0x03;                                           /* 8 Bits, 1 Stop, No Parity                                */
000160  e3a08003          MOV      r8,#3
;;;173    
;;;174        OS_ENTER_CRITICAL();
000164  ebfffffe          BL       OS_CPU_SR_Save
000168  e1a0b000          MOV      r11,r0
;;;175                                                                            /* Configure P3.16 & P3.17 for UART1                        */
;;;176        pinsel          = PINSEL7;
00016c  e59f00b0          LDR      r0,|L1.548|
000170  e590a01c          LDR      r10,[r0,#0x1c]
;;;177        pinsel         &= 0xFFFFFFF0;
000174  e3caa00f          BIC      r10,r10,#0xf
;;;178        pinsel         |= 0x0000000F;
000178  e38aa00f          ORR      r10,r10,#0xf
;;;179        PINSEL7         = pinsel;
00017c  e580a01c          STR      r10,[r0,#0x1c]
;;;180    
;;;181        U1LCR           =   DEF_BIT_07;                                     /* Set divisor access bit                                   */
000180  e3a00080          MOV      r0,#0x80
000184  e59f1090          LDR      r1,|L1.540|
000188  e581000c          STR      r0,[r1,#0xc]
;;;182        U1DLL           =   divlo;                                          /* Load divisor                                             */
00018c  e1c10000          BIC      r0,r1,r0
000190  e5806000          STR      r6,[r0,#0]
;;;183        U1DLM           =   divhi;
000194  e5807004          STR      r7,[r0,#4]
;;;184        U1LCR           =   lcr;                                            /* Set line control register (Bit 8 is 0)                   */
000198  e580800c          STR      r8,[r0,#0xc]
;;;185        U1IER           =   0x00;                                           /* Disable both Rx and Tx interrupts                        */
00019c  e3a00000          MOV      r0,#0
0001a0  e5810004          STR      r0,[r1,#4]
;;;186        U1FCR           =   0x07;                                           /* Enable FIFO, flush Rx & Tx                               */
0001a4  e3a00007          MOV      r0,#7
0001a8  e5810008          STR      r0,[r1,#8]
;;;187        OS_EXIT_CRITICAL();
0001ac  e1a0000b          MOV      r0,r11
0001b0  ebfffffe          BL       OS_CPU_SR_Restore
;;;188                                                                            /* VIC UART #1 Initialization                               */
;;;189        VICIntSelect   &= ~(1 << VIC_UART1);                                /* Enable interrupts                                        */
0001b4  e3a00000          MOV      r0,#0
0001b8  e5100ff4          LDR      r0,[r0,#-0xff4]
0001bc  e3c00080          BIC      r0,r0,#0x80
0001c0  e3a01000          MOV      r1,#0
0001c4  e5010ff4          STR      r0,[r1,#-0xff4]
;;;190        VICVectAddr7    =  (INT32U)OSView_RxTxISRHandler;                   /* Set the vector address                                   */
0001c8  e24f0f59          ADR      r0,OSView_RxTxISRHandler
0001cc  e5010ee4          STR      r0,[r1,#-0xee4]
;;;191        VICIntEnable    =  (1 << VIC_UART1);                                /* Enable Interrupts                                        */
0001d0  e3a00080          MOV      r0,#0x80
0001d4  e5010ff0          STR      r0,[r1,#-0xff0]
;;;192    #endif
;;;193    }
0001d8  e8bd5ff0          POP      {r4-r12,lr}
0001dc  e12fff1e          BX       lr
                          ENDP

                  OSView_RxIntDis PROC
;;;213    #if OS_VIEW_COMM_SEL == OS_VIEW_UART_1
;;;214        U1IER = 0;
0001e0  e3a00000          MOV      r0,#0
0001e4  e59f1030          LDR      r1,|L1.540|
0001e8  e5810004          STR      r0,[r1,#4]
;;;215    #endif
;;;216    }
0001ec  e12fff1e          BX       lr
                          ENDP

                  OSView_RxIntEn PROC
;;;224    #if OS_VIEW_COMM_SEL == OS_VIEW_UART_1
;;;225        U1IER = DEF_BIT_00;
0001f0  e3a00001          MOV      r0,#1
0001f4  e59f1020          LDR      r1,|L1.540|
0001f8  e5810004          STR      r0,[r1,#4]
;;;226    #endif
;;;227    }
0001fc  e12fff1e          BX       lr
                  |L1.512|
000200  000f4240          DCD      0x000f4240
                  |L1.516|
000204  4e585020          DCB      "NXP "
000208  4c504332          DCB      "LPC2"
00020c  34363820          DCB      "468 "
000210  28787820          DCB      "(xx "
000214  4d487a29          DCB      "MHz)"
000218  00000000          DCB      "\0\0\0\0"
                  |L1.540|
00021c  e0010000          DCD      0xe0010000
                  |L1.544|
000220  0000ffff          DCD      0x0000ffff
                  |L1.548|
000224  e002c000          DCD      0xe002c000
                          ENDP

                  OSView_RxISRHandler PROC
;;;240        ;
;;;241    }
000228  e12fff1e          BX       lr
                          ENDP

                  OSView_TxISRHandler PROC
;;;245        ;
;;;246    }
00022c  e12fff1e          BX       lr
                          ENDP

                  OSView_Tx1 PROC
;;;342    #if OS_VIEW_COMM_SEL == OS_VIEW_UART_1
;;;343        U1THR = c;
000230  e51f101c          LDR      r1,|L1.540|
000234  e5810000          STR      r0,[r1,#0]
;;;344    #endif
;;;345    }
000238  e12fff1e          BX       lr
                          ENDP

                  OSView_TxIntDis PROC
;;;365    #if OS_VIEW_COMM_SEL == OS_VIEW_UART_1
;;;366        U1IER = DEF_BIT_00;
00023c  e3a00001          MOV      r0,#1
000240  e51f102c          LDR      r1,|L1.540|
000244  e5810004          STR      r0,[r1,#4]
;;;367    #endif
;;;368    }
000248  e12fff1e          BX       lr
                          ENDP

                  OSView_TxIntEn PROC
;;;376    #if OS_VIEW_COMM_SEL == OS_VIEW_UART_1
;;;377        U1IER = DEF_BIT_01 | DEF_BIT_00;
00024c  e3a00003          MOV      r0,#3
000250  e51f103c          LDR      r1,|L1.540|
000254  e5810004          STR      r0,[r1,#4]
;;;378    #endif
;;;379    }
000258  e12fff1e          BX       lr
                          ENDP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -