📄 uart.lst
字号:
137 }
138
139 Boolean UsartTXD(pUartFifo_t TFifo,pUartFifo_t RFifo,Int16U *pos)
140 {
141 Int16U a,b;
142 //RFifo->Buffer[5]=10,RFifo->Buffer[3]=0,RFifo->Buffer[1]=3;
143 #if 1
144 if((RFifo->UsartStatus==0)||(RFifo->Buffer[C_RX_ADDR]!=*pos))
145 {
146 RFifo->Timer=RFifo->PushIndx=0;
147 return FALSE;
148 }
149 #endif
150
151 //USART_Cmd(USART1, DISABLE);
152 b=RFifo->Buffer[5];//length
153 TFifo->Buffer[0]=*(pos+C_PrductADD);
154 TFifo->Buffer[1]=RFifo->Buffer[1];
155 if((RFifo->Buffer[3]+RFifo->Buffer[5])>(UART_FIFO_SIZE-2))TFifo->Buffer[1]=0x83;
156 TFifo->PushIndx=2,a=RFifo->Buffer[3];//address
157 if(TFifo->Buffer[1]==3)
158 {
159 pos+=a;
160 a=2;
161 for(;b>0;b--)
162 {
163 TFifo->Buffer[TFifo->PushIndx]=*pos>>8;
164 TFifo->Buffer[++TFifo->PushIndx]=*pos&0xff;
165 pos++,TFifo->PushIndx++;
166 }
167 }
168 b=cal_crc(TFifo->Buffer,TFifo->PushIndx);
169 TFifo->Buffer[TFifo->PushIndx]=b>>8;
170 TFifo->Buffer[++(TFifo->PushIndx)]=b&0xFF;
171
172 TFifo->PopIndx=0;
173 USART_ITConfig(USART1,USART_IT_PE ,ENABLE);//校验错误中断
174 USART_ITConfig(USART1,USART_IT_TC ,DISABLE);//发送完成中断使能
175 USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);//接收非空使能
176 USART_ITConfig(USART1,USART_IT_IDLE,DISABLE);
177 USART_ITConfig(USART1,USART_IT_LBD ,DISABLE);
178 USART_ITConfig(USART1,USART_IT_CTS ,DISABLE);
179 USART_ITConfig(USART1,USART_IT_ERR ,DISABLE);
180 FifoPop(pUart1TxFifo,USART1);
181 USART1_485TXD;
182 USART_ITConfig(USART1,USART_IT_TXE,ENABLE);
183 //USART_Cmd(USART1, ENABLE);
184
185 return FALSE;
186 }
187
188 ///////////////////////////////////////////////
189 ///////////////////////////////////////////////
190 void Uart1Init()
191 {
192 USART_Cmd(USART1, DISABLE);
193 USART_InitTypeDef UART_InitStructure;
194 NVIC_InitTypeDef NVIC_InitStructure;
195 GPIO_InitTypeDef GPIO_InitStructure;
196 pUart1TxFifo=&Uart1TxFifo;
197 pUart1RxFifo=&Uart1RxFifo;
198 UART_InitStructure.USART_BaudRate = BAUD_TAB[_YT._Rate&7];
199 UART_InitStructure.USART_WordLength = USART_WordLength_8b;
200 UART_InitStructure.USART_StopBits = USART_StopBits_1;
201 UART_InitStructure.USART_Parity = USART_Parity_No ;
202 UART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
203 UART_InitStructure.USART_Mode = USART_Mode_Rx|USART_Mode_Tx ;
204 UART_InitStructure.USART_Clock = USART_Clock_Disable;
205 UART_InitStructure.USART_CPOL = USART_CPOL_Low;
206 UART_InitStructure.USART_CPHA = USART_CPHA_1Edge;
207 UART_InitStructure.USART_LastBit = USART_LastBit_Disable;
208
209 UART_InitStructure.USART_Parity = USART_Parity_No;
210 USART_DeInit(USART1);
211 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
212 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
213 RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA,DISABLE);
214 GPIO_PinRemapConfig(GPIO_Remap_USART1,DISABLE);
215 // Assign PA9 to UART1 (Tx)
216 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
217 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
218 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
219 GPIO_Init(GPIOA, &GPIO_InitStructure);
220 // Assign PA10 to UART1 (Rx)
221 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
222 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
223 GPIO_Init(GPIOA, &GPIO_InitStructure);
224 // Init UART1
225 USART_Init(USART1,&UART_InitStructure);
226 // Enable and configure the priority of the UART1 Update IRQ Channel
227 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;
228 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =10;//4 UART1_INTR_PRI;
229 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//5
230 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
231 NVIC_Init(&NVIC_InitStructure);
232
233 USART_ClearFlag(USART1, USART_FLAG_CTS | USART_FLAG_LBD | USART_FLAG_TXE |
234 USART_FLAG_TC | USART_FLAG_RXNE | USART_FLAG_IDLE |
235 USART_FLAG_ORE | USART_FLAG_NE | USART_FLAG_FE |
236 USART_FLAG_PE);
237
238 // Enable UART1 interrupts
239 //USART_ITConfig(USART1,USART_IT_PE ,ENABLE);//校验错误中断
240 USART_ITConfig(USART1,USART_IT_PE ,ENABLE); // DISABLE
241 USART_ITConfig(USART1,USART_IT_TXE ,DISABLE);
242 USART_ITConfig(USART1,USART_IT_TC ,DISABLE);//发送完成中断使能
243 USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//接收非空使能
244 USART_ITConfig(USART1,USART_IT_IDLE,DISABLE);
245 USART_ITConfig(USART1,USART_IT_LBD ,DISABLE);
246 USART_ITConfig(USART1,USART_IT_CTS ,DISABLE);
247 USART_ITConfig(USART1,USART_IT_ERR ,DISABLE);
248 USART1_485RXD;
249 Uart1RxFifo.UsartStatus=0;
250 USART_Cmd(USART1, ENABLE);
251
252 }
253
Maximum stack usage in bytes:
Function .cstack
-------- -------
FifoPop 8
FifoPush 24
Uart1Init 40
Uart1Isr 8
UsartRXD 24
UsartTXD 24
Section sizes:
Function/Label Bytes
-------------- -----
BAUD_TAB 8
FifoPush 60
FifoPop 42
Uart1Isr 268
UsartRXD 216
UsartTXD 288
Uart1Init 416
??DataTable26 4
??DataTable36 4
??DataTable38 4
??DataTable40 4
??DataTable42 4
??DataTable44 4
??DataTable46 4
??DataTable50 4
??DataTable52 4
??DataTable53 4
??DataTable54 4
8 bytes in section .rodata
1 334 bytes in section .text
1 334 bytes of CODE memory
8 bytes of CONST memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -