fix uart
Showing
6 changed files
with
19 additions
and
47 deletions
... | @@ -59,8 +59,8 @@ | ... | @@ -59,8 +59,8 @@ |
59 | #define configCPU_CLOCK_HZ ( SystemCoreClock ) | 59 | #define configCPU_CLOCK_HZ ( SystemCoreClock ) |
60 | #define configTICK_RATE_HZ ((TickType_t)1000) | 60 | #define configTICK_RATE_HZ ((TickType_t)1000) |
61 | #define configMAX_PRIORITIES ( 56 ) | 61 | #define configMAX_PRIORITIES ( 56 ) |
62 | #define configMINIMAL_STACK_SIZE ((uint16_t)64) | 62 | #define configMINIMAL_STACK_SIZE ((uint16_t)128) |
63 | #define configTOTAL_HEAP_SIZE ((size_t)2560) | 63 | #define configTOTAL_HEAP_SIZE ((size_t)2048) |
64 | #define configMAX_TASK_NAME_LEN ( 16 ) | 64 | #define configMAX_TASK_NAME_LEN ( 16 ) |
65 | #define configUSE_TRACE_FACILITY 1 | 65 | #define configUSE_TRACE_FACILITY 1 |
66 | #define configUSE_16_BIT_TICKS 0 | 66 | #define configUSE_16_BIT_TICKS 0 | ... | ... |
... | @@ -27,10 +27,10 @@ | ... | @@ -27,10 +27,10 @@ |
27 | #include "main.h" | 27 | #include "main.h" |
28 | 28 | ||
29 | /* USER CODE BEGIN Includes */ | 29 | /* USER CODE BEGIN Includes */ |
30 | #define USART_REC_LEN 200 // 最大接收字节数 | 30 | #define USART_REC_LEN 200 // æœ?大接收å—节数 |
31 | 31 | ||
32 | extern uint8_t USART_RX_BUF[USART_REC_LEN]; // 接收缓冲,最大USART_REC_LEN个å—节,末å—节为æ¢è¡Œ | 32 | extern uint8_t USART_RX_BUF[USART_REC_LEN]; // 接收缓冲,最大USART_REC_LEN个å—节,末å—节为æ¢è¡Œ |
33 | extern uint16_t USART_RX_STA; // 接收状态 | 33 | extern uint16_t USART_RX_STA; // 接收状æ?? |
34 | 34 | ||
35 | #define RXBUFFERSIZE 1 // 缓å˜å¤§å° | 35 | #define RXBUFFERSIZE 1 // 缓å˜å¤§å° |
36 | extern uint8_t aRxBuffer[RXBUFFERSIZE]; // HAL库USART接收Buffer | 36 | extern uint8_t aRxBuffer[RXBUFFERSIZE]; // HAL库USART接收Buffer | ... | ... |
... | @@ -50,7 +50,6 @@ | ... | @@ -50,7 +50,6 @@ |
50 | osThreadId_t LEDTaskHandle; | 50 | osThreadId_t LEDTaskHandle; |
51 | osThreadId_t KeyScanTaskHandle; | 51 | osThreadId_t KeyScanTaskHandle; |
52 | osThreadId_t UartTaskHandle; | 52 | osThreadId_t UartTaskHandle; |
53 | osThreadId_t CoreTaskHandle; | ||
54 | 53 | ||
55 | /* Private function prototypes -----------------------------------------------*/ | 54 | /* Private function prototypes -----------------------------------------------*/ |
56 | /* USER CODE BEGIN FunctionPrototypes */ | 55 | /* USER CODE BEGIN FunctionPrototypes */ |
... | @@ -60,7 +59,6 @@ osThreadId_t CoreTaskHandle; | ... | @@ -60,7 +59,6 @@ osThreadId_t CoreTaskHandle; |
60 | void StartLEDTask(void *argument); | 59 | void StartLEDTask(void *argument); |
61 | void StartKeyScanTask(void *argument); | 60 | void StartKeyScanTask(void *argument); |
62 | void StartUartTask(void *argument); | 61 | void StartUartTask(void *argument); |
63 | void StartCoreTask(void *argument); | ||
64 | 62 | ||
65 | void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */ | 63 | void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */ |
66 | 64 | ||
... | @@ -96,7 +94,7 @@ osKernelInitialize(); | ... | @@ -96,7 +94,7 @@ osKernelInitialize(); |
96 | const osThreadAttr_t LEDTask_attributes = { | 94 | const osThreadAttr_t LEDTask_attributes = { |
97 | .name = "LEDTask", | 95 | .name = "LEDTask", |
98 | .priority = (osPriority_t) osPriorityNormal, | 96 | .priority = (osPriority_t) osPriorityNormal, |
99 | .stack_size = 64 | 97 | .stack_size = 128 |
100 | }; | 98 | }; |
101 | LEDTaskHandle = osThreadNew(StartLEDTask, NULL, &LEDTask_attributes); | 99 | LEDTaskHandle = osThreadNew(StartLEDTask, NULL, &LEDTask_attributes); |
102 | 100 | ||
... | @@ -104,7 +102,7 @@ osKernelInitialize(); | ... | @@ -104,7 +102,7 @@ osKernelInitialize(); |
104 | const osThreadAttr_t KeyScanTask_attributes = { | 102 | const osThreadAttr_t KeyScanTask_attributes = { |
105 | .name = "KeyScanTask", | 103 | .name = "KeyScanTask", |
106 | .priority = (osPriority_t) osPriorityNormal, | 104 | .priority = (osPriority_t) osPriorityNormal, |
107 | .stack_size = 64 | 105 | .stack_size = 128 |
108 | }; | 106 | }; |
109 | KeyScanTaskHandle = osThreadNew(StartKeyScanTask, NULL, &KeyScanTask_attributes); | 107 | KeyScanTaskHandle = osThreadNew(StartKeyScanTask, NULL, &KeyScanTask_attributes); |
110 | 108 | ||
... | @@ -116,14 +114,6 @@ osKernelInitialize(); | ... | @@ -116,14 +114,6 @@ osKernelInitialize(); |
116 | }; | 114 | }; |
117 | UartTaskHandle = osThreadNew(StartUartTask, NULL, &UartTask_attributes); | 115 | UartTaskHandle = osThreadNew(StartUartTask, NULL, &UartTask_attributes); |
118 | 116 | ||
119 | /* definition and creation of CoreTask */ | ||
120 | const osThreadAttr_t CoreTask_attributes = { | ||
121 | .name = "CoreTask", | ||
122 | .priority = (osPriority_t) osPriorityLow, | ||
123 | .stack_size = 128 | ||
124 | }; | ||
125 | CoreTaskHandle = osThreadNew(StartCoreTask, NULL, &CoreTask_attributes); | ||
126 | |||
127 | /* USER CODE BEGIN RTOS_THREADS */ | 117 | /* USER CODE BEGIN RTOS_THREADS */ |
128 | /* add threads, ... */ | 118 | /* add threads, ... */ |
129 | /* USER CODE END RTOS_THREADS */ | 119 | /* USER CODE END RTOS_THREADS */ |
... | @@ -191,10 +181,10 @@ void StartUartTask(void *argument) | ... | @@ -191,10 +181,10 @@ void StartUartTask(void *argument) |
191 | if (USART_RX_STA & 0x8000) | 181 | if (USART_RX_STA & 0x8000) |
192 | { | 182 | { |
193 | len = USART_RX_STA & 0x3fff; // 获取接收到的数据长度 | 183 | len = USART_RX_STA & 0x3fff; // 获取接收到的数据长度 |
194 | printf("\r\n接收到的数据:\r\n"); | 184 | HAL_UART_Transmit(&huart1, (uint8_t*)"\r\nReceived:\r\n", sizeof("\r\nReceived:\r\n"), 1000); |
195 | HAL_UART_Transmit(&huart1, (uint8_t*)USART_RX_BUF, len, 1000); | 185 | HAL_UART_Transmit(&huart1, (uint8_t*)USART_RX_BUF, len, 1000); |
196 | while (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_TC) != SET); | 186 | while (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_TC) != SET); |
197 | printf("\r\n\r\n"); // 插入换行 | 187 | HAL_UART_Transmit(&huart1, (uint8_t*)"\r\n\r\n", sizeof("\r\n\r\n"), 1000); |
198 | USART_RX_STA=0; | 188 | USART_RX_STA=0; |
199 | } | 189 | } |
200 | else | 190 | else |
... | @@ -202,10 +192,10 @@ void StartUartTask(void *argument) | ... | @@ -202,10 +192,10 @@ void StartUartTask(void *argument) |
202 | times++; | 192 | times++; |
203 | if (times % 5000 == 0) | 193 | if (times % 5000 == 0) |
204 | { | 194 | { |
205 | printf("\r\n串口实验\r\n"); | 195 | HAL_UART_Transmit(&huart1, (uint8_t*)"\r\nUART Test\r\n", sizeof("\r\nUART Test\r\n"), 1000); |
206 | } | 196 | } |
207 | if (times % 200 == 0) | 197 | if (times % 1000 == 0) |
208 | printf("请输入数据,以回车键结束\r\n"); | 198 | HAL_UART_Transmit(&huart1, (uint8_t*)"print char\r\n", sizeof("print char\r\n"), 1000); |
209 | } | 199 | } |
210 | 200 | ||
211 | osDelay(1); | 201 | osDelay(1); |
... | @@ -213,24 +203,6 @@ void StartUartTask(void *argument) | ... | @@ -213,24 +203,6 @@ void StartUartTask(void *argument) |
213 | /* USER CODE END StartUartTask */ | 203 | /* USER CODE END StartUartTask */ |
214 | } | 204 | } |
215 | 205 | ||
216 | /* USER CODE BEGIN Header_StartCoreTask */ | ||
217 | /** | ||
218 | * @brief Function implementing the CoreTask thread. | ||
219 | * @param argument: Not used | ||
220 | * @retval None | ||
221 | */ | ||
222 | /* USER CODE END Header_StartCoreTask */ | ||
223 | void StartCoreTask(void *argument) | ||
224 | { | ||
225 | /* USER CODE BEGIN StartCoreTask */ | ||
226 | /* Infinite loop */ | ||
227 | for(;;) | ||
228 | { | ||
229 | osDelay(1); | ||
230 | } | ||
231 | /* USER CODE END StartCoreTask */ | ||
232 | } | ||
233 | |||
234 | /* Private application code --------------------------------------------------*/ | 206 | /* Private application code --------------------------------------------------*/ |
235 | /* USER CODE BEGIN Application */ | 207 | /* USER CODE BEGIN Application */ |
236 | 208 | ... | ... |
... | @@ -93,7 +93,7 @@ int main(void) | ... | @@ -93,7 +93,7 @@ int main(void) |
93 | MX_USART1_UART_Init(); | 93 | MX_USART1_UART_Init(); |
94 | MX_USART2_UART_Init(); | 94 | MX_USART2_UART_Init(); |
95 | /* USER CODE BEGIN 2 */ | 95 | /* USER CODE BEGIN 2 */ |
96 | // 使能UART1中断 | 96 | // 使能UART2中断 |
97 | HAL_UART_Receive_IT(&huart2, (uint8_t*)aRxBuffer, RXBUFFERSIZE); | 97 | HAL_UART_Receive_IT(&huart2, (uint8_t*)aRxBuffer, RXBUFFERSIZE); |
98 | /* USER CODE END 2 */ | 98 | /* USER CODE END 2 */ |
99 | 99 | ... | ... |
... | @@ -197,7 +197,7 @@ void _sys_exit(int x) | ... | @@ -197,7 +197,7 @@ void _sys_exit(int x) |
197 | */ | 197 | */ |
198 | int fputc(int ch, FILE *f) | 198 | int fputc(int ch, FILE *f) |
199 | { | 199 | { |
200 | while ((USART1->ISR & 0X40) == 0); // 循环发送 | 200 | while ((USART1->ISR & 0X40) == 0); // 循环发?? |
201 | USART1->RDR = (uint8_t) ch; | 201 | USART1->RDR = (uint8_t) ch; |
202 | return ch; | 202 | return ch; |
203 | } | 203 | } |
... | @@ -209,16 +209,16 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) | ... | @@ -209,16 +209,16 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) |
209 | { | 209 | { |
210 | if (huart->Instance == USART2) // 串口1 | 210 | if (huart->Instance == USART2) // 串口1 |
211 | { | 211 | { |
212 | if ((USART_RX_STA & 0x8000) == 0) // 接收未完�? | 212 | if ((USART_RX_STA & 0x8000) == 0) // 接收未完?? |
213 | { | 213 | { |
214 | if (USART_RX_STA & 0x4000) // 接收到了0x0D | 214 | if (USART_RX_STA & 0x4000) // 接收到了0x0D |
215 | { | 215 | { |
216 | if (aRxBuffer[0] != 0x0a) | 216 | if (aRxBuffer[0] != 0x0a) |
217 | USART_RX_STA = 0; // 接收错误,重新接�? | 217 | USART_RX_STA = 0; // 接收错误,重新接?? |
218 | else | 218 | else |
219 | USART_RX_STA |= 0x8000; // 接收完成 | 219 | USART_RX_STA |= 0x8000; // 接收完成 |
220 | } | 220 | } |
221 | else // 还没接收�?0x0D | 221 | else // 还没接收??0x0D |
222 | { | 222 | { |
223 | if (aRxBuffer[0] == 0x0d) | 223 | if (aRxBuffer[0] == 0x0d) |
224 | { | 224 | { |
... | @@ -230,7 +230,7 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) | ... | @@ -230,7 +230,7 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) |
230 | USART_RX_STA++; | 230 | USART_RX_STA++; |
231 | if (USART_RX_STA > (USART_REC_LEN-1)) | 231 | if (USART_RX_STA > (USART_REC_LEN-1)) |
232 | { | 232 | { |
233 | USART_RX_STA = 0; // 接收错误,重新开始接�? | 233 | USART_RX_STA = 0; // 接收错误,重新开始接?? |
234 | } | 234 | } |
235 | } | 235 | } |
236 | } | 236 | } | ... | ... |
1 | #MicroXplorer Configuration settings - do not modify | 1 | #MicroXplorer Configuration settings - do not modify |
2 | FREERTOS.FootprintOK=true | 2 | FREERTOS.FootprintOK=true |
3 | FREERTOS.IPParameters=Tasks01,FootprintOK,configTOTAL_HEAP_SIZE | 3 | FREERTOS.IPParameters=Tasks01,FootprintOK,configTOTAL_HEAP_SIZE |
4 | FREERTOS.Tasks01=LEDTask,24,128,StartLEDTask,Default,NULL,Dynamic,NULL,NULL;KeyScanTask,24,128,StartKeyScanTask,Default,NULL,Dynamic,NULL,NULL;UartTask,24,128,StartUartTask,Default,NULL,Dynamic,NULL,NULL;CoreTask,8,128,StartCoreTask,Default,NULL,Dynamic,NULL,NULL | 4 | FREERTOS.Tasks01=LEDTask,24,128,StartLEDTask,Default,NULL,Dynamic,NULL,NULL;KeyScanTask,24,128,StartKeyScanTask,Default,NULL,Dynamic,NULL,NULL;UartTask,24,128,StartUartTask,Default,NULL,Dynamic,NULL,NULL |
5 | FREERTOS.configTOTAL_HEAP_SIZE=2560 | 5 | FREERTOS.configTOTAL_HEAP_SIZE=2048 |
6 | File.Version=6 | 6 | File.Version=6 |
7 | KeepUserPlacement=false | 7 | KeepUserPlacement=false |
8 | Mcu.Family=STM32F0 | 8 | Mcu.Family=STM32F0 | ... | ... |
-
Please register or sign in to post a comment