📄 os_viewc.txt
字号:
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 + -