037006bb by 张亚玄

add new key & led

1 parent fc8c2e27
...@@ -26,11 +26,14 @@ typedef enum ...@@ -26,11 +26,14 @@ typedef enum
26 #define LED_TOTAL_STATE_NUM 4 26 #define LED_TOTAL_STATE_NUM 4
27 27
28 /* LED control defines --------------------------------------------------------*/ 28 /* LED control defines --------------------------------------------------------*/
29 #define LED1_Reset() HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET) 29 #define LED1_Close() HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET)
30 #define LED1_Set() HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET) 30 #define LED1_Open() HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET)
31 31
32 #define LED2_Reset() HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET) 32 #define LED2_Close() HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET)
33 #define LED2_Set() HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET) 33 #define LED2_Open() HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET)
34
35 #define LED3_Close() HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_SET)
36 #define LED3_Open() HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET)
34 37
35 extern LED_State ledState; 38 extern LED_State ledState;
36 39
......
...@@ -64,6 +64,8 @@ void Error_Handler(void); ...@@ -64,6 +64,8 @@ void Error_Handler(void);
64 #define DEBUG_RX_GPIO_Port GPIOA 64 #define DEBUG_RX_GPIO_Port GPIOA
65 #define BEEP_Pin GPIO_PIN_12 65 #define BEEP_Pin GPIO_PIN_12
66 #define BEEP_GPIO_Port GPIOA 66 #define BEEP_GPIO_Port GPIOA
67 #define LED3_Pin GPIO_PIN_5
68 #define LED3_GPIO_Port GPIOB
67 #define LED2_Pin GPIO_PIN_6 69 #define LED2_Pin GPIO_PIN_6
68 #define LED2_GPIO_Port GPIOB 70 #define LED2_GPIO_Port GPIOB
69 #define LED1_Pin GPIO_PIN_7 71 #define LED1_Pin GPIO_PIN_7
......
...@@ -19,23 +19,23 @@ void LED_StateControl(LED_State ledMode) ...@@ -19,23 +19,23 @@ void LED_StateControl(LED_State ledMode)
19 switch (ledMode) 19 switch (ledMode)
20 { 20 {
21 case LED00: 21 case LED00:
22 LED1_Reset(); 22 LED1_Close();
23 LED2_Reset(); 23 LED2_Close();
24 break; 24 break;
25 25
26 case LED01: 26 case LED01:
27 LED1_Reset(); 27 LED1_Close();
28 LED2_Set(); 28 LED2_Open();
29 break; 29 break;
30 30
31 case LED10: 31 case LED10:
32 LED1_Set(); 32 LED1_Open();
33 LED2_Reset(); 33 LED2_Close();
34 break; 34 break;
35 35
36 case LED11: 36 case LED11:
37 LED1_Set(); 37 LED1_Open();
38 LED2_Set(); 38 LED2_Open();
39 break; 39 break;
40 40
41 default: 41 default:
......
...@@ -56,6 +56,7 @@ osThreadId_t KeyScanTaskHandle; ...@@ -56,6 +56,7 @@ osThreadId_t KeyScanTaskHandle;
56 osThreadId_t UartTaskHandle; 56 osThreadId_t UartTaskHandle;
57 osThreadId_t CoreTaskHandle; 57 osThreadId_t CoreTaskHandle;
58 osThreadId_t SensorTaskHandle; 58 osThreadId_t SensorTaskHandle;
59 osMessageQueueId_t KeyStatusQueueHandle;
59 60
60 /* Private function prototypes -----------------------------------------------*/ 61 /* Private function prototypes -----------------------------------------------*/
61 /* USER CODE BEGIN FunctionPrototypes */ 62 /* USER CODE BEGIN FunctionPrototypes */
...@@ -93,6 +94,13 @@ osKernelInitialize(); ...@@ -93,6 +94,13 @@ osKernelInitialize();
93 /* start timers, add new ones, ... */ 94 /* start timers, add new ones, ... */
94 /* USER CODE END RTOS_TIMERS */ 95 /* USER CODE END RTOS_TIMERS */
95 96
97 /* Create the queue(s) */
98 /* definition and creation of KeyStatusQueue */
99 const osMessageQueueAttr_t KeyStatusQueue_attributes = {
100 .name = "KeyStatusQueue"
101 };
102 KeyStatusQueueHandle = osMessageQueueNew (4, sizeof(uint8_t), &KeyStatusQueue_attributes);
103
96 /* USER CODE BEGIN RTOS_QUEUES */ 104 /* USER CODE BEGIN RTOS_QUEUES */
97 /* add queues, ... */ 105 /* add queues, ... */
98 /* USER CODE END RTOS_QUEUES */ 106 /* USER CODE END RTOS_QUEUES */
...@@ -101,23 +109,23 @@ osKernelInitialize(); ...@@ -101,23 +109,23 @@ osKernelInitialize();
101 /* definition and creation of LEDTask */ 109 /* definition and creation of LEDTask */
102 const osThreadAttr_t LEDTask_attributes = { 110 const osThreadAttr_t LEDTask_attributes = {
103 .name = "LEDTask", 111 .name = "LEDTask",
104 .priority = (osPriority_t) osPriorityNormal, 112 .priority = (osPriority_t) osPriorityNormal5,
105 .stack_size = 128 113 .stack_size = 512
106 }; 114 };
107 LEDTaskHandle = osThreadNew(StartLEDTask, NULL, &LEDTask_attributes); 115 LEDTaskHandle = osThreadNew(StartLEDTask, NULL, &LEDTask_attributes);
108 116
109 /* definition and creation of KeyScanTask */ 117 /* definition and creation of KeyScanTask */
110 const osThreadAttr_t KeyScanTask_attributes = { 118 const osThreadAttr_t KeyScanTask_attributes = {
111 .name = "KeyScanTask", 119 .name = "KeyScanTask",
112 .priority = (osPriority_t) osPriorityNormal, 120 .priority = (osPriority_t) osPriorityNormal3,
113 .stack_size = 128 121 .stack_size = 512
114 }; 122 };
115 KeyScanTaskHandle = osThreadNew(StartKeyScanTask, NULL, &KeyScanTask_attributes); 123 KeyScanTaskHandle = osThreadNew(StartKeyScanTask, NULL, &KeyScanTask_attributes);
116 124
117 /* definition and creation of UartTask */ 125 /* definition and creation of UartTask */
118 const osThreadAttr_t UartTask_attributes = { 126 const osThreadAttr_t UartTask_attributes = {
119 .name = "UartTask", 127 .name = "UartTask",
120 .priority = (osPriority_t) osPriorityNormal, 128 .priority = (osPriority_t) osPriorityNormal3,
121 .stack_size = 512 129 .stack_size = 512
122 }; 130 };
123 UartTaskHandle = osThreadNew(StartUartTask, NULL, &UartTask_attributes); 131 UartTaskHandle = osThreadNew(StartUartTask, NULL, &UartTask_attributes);
...@@ -125,16 +133,16 @@ osKernelInitialize(); ...@@ -125,16 +133,16 @@ osKernelInitialize();
125 /* definition and creation of CoreTask */ 133 /* definition and creation of CoreTask */
126 const osThreadAttr_t CoreTask_attributes = { 134 const osThreadAttr_t CoreTask_attributes = {
127 .name = "CoreTask", 135 .name = "CoreTask",
128 .priority = (osPriority_t) osPriorityNormal, 136 .priority = (osPriority_t) osPriorityNormal3,
129 .stack_size = 128 137 .stack_size = 512
130 }; 138 };
131 CoreTaskHandle = osThreadNew(StartCoreTask, NULL, &CoreTask_attributes); 139 CoreTaskHandle = osThreadNew(StartCoreTask, NULL, &CoreTask_attributes);
132 140
133 /* definition and creation of SensorTask */ 141 /* definition and creation of SensorTask */
134 const osThreadAttr_t SensorTask_attributes = { 142 const osThreadAttr_t SensorTask_attributes = {
135 .name = "SensorTask", 143 .name = "SensorTask",
136 .priority = (osPriority_t) osPriorityNormal, 144 .priority = (osPriority_t) osPriorityNormal5,
137 .stack_size = 128 145 .stack_size = 512
138 }; 146 };
139 SensorTaskHandle = osThreadNew(StartSensorTask, NULL, &SensorTask_attributes); 147 SensorTaskHandle = osThreadNew(StartSensorTask, NULL, &SensorTask_attributes);
140 148
...@@ -154,13 +162,15 @@ osKernelInitialize(); ...@@ -154,13 +162,15 @@ osKernelInitialize();
154 void StartLEDTask(void *argument) 162 void StartLEDTask(void *argument)
155 { 163 {
156 /* USER CODE BEGIN StartLEDTask */ 164 /* USER CODE BEGIN StartLEDTask */
157 165 uint8_t keyState;
158 /* Infinite loop */ 166 /* Infinite loop */
159 for(;;) 167 for(;;)
160 { 168 {
161 // ledState = ledState % LED_TOTAL_STATE_NUM; 169 if (osMessageQueueGet(KeyStatusQueueHandle, &keyState, 0, portMAX_DELAY) == osOK) {
162 // LED_StateControl(ledState); 170 ledState = (keyState - 1) % LED_TOTAL_STATE_NUM;
163 osDelay(1); 171 LED_StateControl(ledState);
172 }
173 osDelay(10);
164 } 174 }
165 /* USER CODE END StartLEDTask */ 175 /* USER CODE END StartLEDTask */
166 } 176 }
...@@ -186,9 +196,8 @@ void StartKeyScanTask(void *argument) ...@@ -186,9 +196,8 @@ void StartKeyScanTask(void *argument)
186 osDelay(10); 196 osDelay(10);
187 if (KEY1_read() == KEY1_UP) 197 if (KEY1_read() == KEY1_UP)
188 { 198 {
189 LED2_Reset(); 199 LED3_Close();
190 count = 0; 200 count = 0;
191 flag = 0;
192 goto DONE; 201 goto DONE;
193 } 202 }
194 if(count < 500)// 0 ~ 5 000 ms 203 if(count < 500)// 0 ~ 5 000 ms
...@@ -196,7 +205,7 @@ void StartKeyScanTask(void *argument) ...@@ -196,7 +205,7 @@ void StartKeyScanTask(void *argument)
196 flag = KEY_PRESS_0_5S; 205 flag = KEY_PRESS_0_5S;
197 if(count % 10 == 0) 206 if(count % 10 == 0)
198 { 207 {
199 HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin); 208 HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin);
200 } 209 }
201 } 210 }
202 else if((count >= 500) && (count < 1000))// 5 000 ~ 10 000 ms 211 else if((count >= 500) && (count < 1000))// 5 000 ~ 10 000 ms
...@@ -204,7 +213,7 @@ void StartKeyScanTask(void *argument) ...@@ -204,7 +213,7 @@ void StartKeyScanTask(void *argument)
204 flag = KEY_PRESS_5_10S; 213 flag = KEY_PRESS_5_10S;
205 if(count % 30 == 0) 214 if(count % 30 == 0)
206 { 215 {
207 HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin); 216 HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin);
208 } 217 }
209 } 218 }
210 else if((count >= 1000) && (count < 1500))// 10 000 ~ 15 000 ms 219 else if((count >= 1000) && (count < 1500))// 10 000 ~ 15 000 ms
...@@ -212,7 +221,7 @@ void StartKeyScanTask(void *argument) ...@@ -212,7 +221,7 @@ void StartKeyScanTask(void *argument)
212 flag = KEY_PRESS_10_15S; 221 flag = KEY_PRESS_10_15S;
213 if(count % 50 == 0) 222 if(count % 50 == 0)
214 { 223 {
215 HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin); 224 HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin);
216 } 225 }
217 } 226 }
218 else 227 else
...@@ -223,7 +232,14 @@ void StartKeyScanTask(void *argument) ...@@ -223,7 +232,14 @@ void StartKeyScanTask(void *argument)
223 } 232 }
224 else 233 else
225 { 234 {
226 LED2_Reset(); 235 if (flag != 0) // key state changed
236 {
237 if (osMessageQueuePut(KeyStatusQueueHandle, &flag, 0, 100) != osOK)
238 {
239 mprintf("queue send message failed\r\n");
240 }
241 }
242 LED3_Close();
227 count = 0; 243 count = 0;
228 flag = 0; 244 flag = 0;
229 } 245 }
......
...@@ -52,6 +52,9 @@ void MX_GPIO_Init(void) ...@@ -52,6 +52,9 @@ void MX_GPIO_Init(void)
52 HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, GPIO_PIN_RESET); 52 HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, GPIO_PIN_RESET);
53 53
54 /*Configure GPIO pin Output Level */ 54 /*Configure GPIO pin Output Level */
55 HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_SET);
56
57 /*Configure GPIO pin Output Level */
55 HAL_GPIO_WritePin(GPIOB, LED2_Pin|LED1_Pin, GPIO_PIN_RESET); 58 HAL_GPIO_WritePin(GPIOB, LED2_Pin|LED1_Pin, GPIO_PIN_RESET);
56 59
57 /*Configure GPIO pin : PtPin */ 60 /*Configure GPIO pin : PtPin */
...@@ -61,6 +64,13 @@ void MX_GPIO_Init(void) ...@@ -61,6 +64,13 @@ void MX_GPIO_Init(void)
61 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 64 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
62 HAL_GPIO_Init(BEEP_GPIO_Port, &GPIO_InitStruct); 65 HAL_GPIO_Init(BEEP_GPIO_Port, &GPIO_InitStruct);
63 66
67 /*Configure GPIO pin : PtPin */
68 GPIO_InitStruct.Pin = LED3_Pin;
69 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
70 GPIO_InitStruct.Pull = GPIO_PULLUP;
71 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
72 HAL_GPIO_Init(LED3_GPIO_Port, &GPIO_InitStruct);
73
64 /*Configure GPIO pins : PBPin PBPin */ 74 /*Configure GPIO pins : PBPin PBPin */
65 GPIO_InitStruct.Pin = LED2_Pin|LED1_Pin; 75 GPIO_InitStruct.Pin = LED2_Pin|LED1_Pin;
66 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 76 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
......
...@@ -187,12 +187,12 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) ...@@ -187,12 +187,12 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
187 /* USER CODE BEGIN Callback 1 */ 187 /* USER CODE BEGIN Callback 1 */
188 if(htim->Instance == TIM3) 188 if(htim->Instance == TIM3)
189 { 189 {
190 mprintf("TIM3 elapsed\r\n"); 190 // mprintf("TIM3 elapsed\r\n");
191 BEEP_call(); 191 BEEP_call();
192 } 192 }
193 if(htim->Instance == TIM6) 193 if(htim->Instance == TIM6)
194 { 194 {
195 mprintf("TIM6 elapsed\r\n"); 195 // mprintf("TIM6 elapsed\r\n");
196 HAL_TIM_Base_Stop_IT(&htim6); 196 HAL_TIM_Base_Stop_IT(&htim6);
197 BEEP_close(); 197 BEEP_close();
198 } 198 }
......
1 #MicroXplorer Configuration settings - do not modify 1 #MicroXplorer Configuration settings - do not modify
2 FREERTOS.FootprintOK=false 2 FREERTOS.FootprintOK=false
3 FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE,configTIMER_TASK_STACK_DEPTH,FootprintOK 3 FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE,configTIMER_TASK_STACK_DEPTH,FootprintOK,Queues01
4 FREERTOS.Tasks01=LEDTask,24,128,StartLEDTask,Default,NULL,Dynamic,NULL,NULL;KeyScanTask,24,128,StartKeyScanTask,Default,NULL,Dynamic,NULL,NULL;UartTask,24,512,StartUartTask,Default,NULL,Dynamic,NULL,NULL;CoreTask,24,128,StartCoreTask,Default,NULL,Dynamic,NULL,NULL;SensorTask,24,128,StartSensorTask,Default,NULL,Dynamic,NULL,NULL 4 FREERTOS.Queues01=KeyStatusQueue,4,uint8_t,0,Dynamic,NULL,NULL
5 FREERTOS.Tasks01=LEDTask,29,512,StartLEDTask,Default,NULL,Dynamic,NULL,NULL;KeyScanTask,27,512,StartKeyScanTask,Default,NULL,Dynamic,NULL,NULL;UartTask,27,512,StartUartTask,Default,NULL,Dynamic,NULL,NULL;CoreTask,27,512,StartCoreTask,Default,NULL,Dynamic,NULL,NULL;SensorTask,29,512,StartSensorTask,Default,NULL,Dynamic,NULL,NULL
5 FREERTOS.configTIMER_TASK_STACK_DEPTH=128 6 FREERTOS.configTIMER_TASK_STACK_DEPTH=128
6 FREERTOS.configTOTAL_HEAP_SIZE=2560 7 FREERTOS.configTOTAL_HEAP_SIZE=2560
7 File.Version=6 8 File.Version=6
...@@ -21,14 +22,15 @@ Mcu.Package=LQFP48 ...@@ -21,14 +22,15 @@ Mcu.Package=LQFP48
21 Mcu.Pin0=PC14-OSC32_IN 22 Mcu.Pin0=PC14-OSC32_IN
22 Mcu.Pin1=PC15-OSC32_OUT 23 Mcu.Pin1=PC15-OSC32_OUT
23 Mcu.Pin10=PA14 24 Mcu.Pin10=PA14
24 Mcu.Pin11=PB6 25 Mcu.Pin11=PB5
25 Mcu.Pin12=PB7 26 Mcu.Pin12=PB6
26 Mcu.Pin13=PB8 27 Mcu.Pin13=PB7
27 Mcu.Pin14=PB9 28 Mcu.Pin14=PB8
28 Mcu.Pin15=VP_FREERTOS_VS_CMSIS_V2 29 Mcu.Pin15=PB9
29 Mcu.Pin16=VP_SYS_VS_tim1 30 Mcu.Pin16=VP_FREERTOS_VS_CMSIS_V2
30 Mcu.Pin17=VP_TIM3_VS_no_output1 31 Mcu.Pin17=VP_SYS_VS_tim1
31 Mcu.Pin18=VP_TIM6_VS_ClockSourceINT 32 Mcu.Pin18=VP_TIM3_VS_no_output1
33 Mcu.Pin19=VP_TIM6_VS_ClockSourceINT
32 Mcu.Pin2=PF0-OSC_IN 34 Mcu.Pin2=PF0-OSC_IN
33 Mcu.Pin3=PF1-OSC_OUT 35 Mcu.Pin3=PF1-OSC_OUT
34 Mcu.Pin4=PA2 36 Mcu.Pin4=PA2
...@@ -37,7 +39,7 @@ Mcu.Pin6=PA9 ...@@ -37,7 +39,7 @@ Mcu.Pin6=PA9
37 Mcu.Pin7=PA10 39 Mcu.Pin7=PA10
38 Mcu.Pin8=PA12 40 Mcu.Pin8=PA12
39 Mcu.Pin9=PA13 41 Mcu.Pin9=PA13
40 Mcu.PinsNb=19 42 Mcu.PinsNb=20
41 Mcu.ThirdPartyNb=0 43 Mcu.ThirdPartyNb=0
42 Mcu.UserConstants= 44 Mcu.UserConstants=
43 Mcu.UserName=STM32F030C8Tx 45 Mcu.UserName=STM32F030C8Tx
...@@ -80,6 +82,13 @@ PA9.GPIO_PuPd=GPIO_PULLUP ...@@ -80,6 +82,13 @@ PA9.GPIO_PuPd=GPIO_PULLUP
80 PA9.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM 82 PA9.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM
81 PA9.Mode=Asynchronous 83 PA9.Mode=Asynchronous
82 PA9.Signal=USART1_TX 84 PA9.Signal=USART1_TX
85 PB5.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label
86 PB5.GPIO_Label=LED3
87 PB5.GPIO_PuPd=GPIO_PULLUP
88 PB5.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
89 PB5.Locked=true
90 PB5.PinState=GPIO_PIN_SET
91 PB5.Signal=GPIO_Output
83 PB6.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label 92 PB6.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label
84 PB6.GPIO_Label=LED2 93 PB6.GPIO_Label=LED2
85 PB6.GPIO_PuPd=GPIO_PULLDOWN 94 PB6.GPIO_PuPd=GPIO_PULLDOWN
......