037006bb by 张亚玄

add new key & led

1 parent fc8c2e27
......@@ -26,11 +26,14 @@ typedef enum
#define LED_TOTAL_STATE_NUM 4
/* LED control defines --------------------------------------------------------*/
#define LED1_Reset() HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET)
#define LED1_Set() HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET)
#define LED1_Close() HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET)
#define LED1_Open() HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET)
#define LED2_Reset() HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET)
#define LED2_Set() HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET)
#define LED2_Close() HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET)
#define LED2_Open() HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET)
#define LED3_Close() HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_SET)
#define LED3_Open() HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET)
extern LED_State ledState;
......
......@@ -64,6 +64,8 @@ void Error_Handler(void);
#define DEBUG_RX_GPIO_Port GPIOA
#define BEEP_Pin GPIO_PIN_12
#define BEEP_GPIO_Port GPIOA
#define LED3_Pin GPIO_PIN_5
#define LED3_GPIO_Port GPIOB
#define LED2_Pin GPIO_PIN_6
#define LED2_GPIO_Port GPIOB
#define LED1_Pin GPIO_PIN_7
......
......@@ -19,23 +19,23 @@ void LED_StateControl(LED_State ledMode)
switch (ledMode)
{
case LED00:
LED1_Reset();
LED2_Reset();
LED1_Close();
LED2_Close();
break;
case LED01:
LED1_Reset();
LED2_Set();
LED1_Close();
LED2_Open();
break;
case LED10:
LED1_Set();
LED2_Reset();
LED1_Open();
LED2_Close();
break;
case LED11:
LED1_Set();
LED2_Set();
LED1_Open();
LED2_Open();
break;
default:
......
......@@ -56,6 +56,7 @@ osThreadId_t KeyScanTaskHandle;
osThreadId_t UartTaskHandle;
osThreadId_t CoreTaskHandle;
osThreadId_t SensorTaskHandle;
osMessageQueueId_t KeyStatusQueueHandle;
/* Private function prototypes -----------------------------------------------*/
/* USER CODE BEGIN FunctionPrototypes */
......@@ -93,6 +94,13 @@ osKernelInitialize();
/* start timers, add new ones, ... */
/* USER CODE END RTOS_TIMERS */
/* Create the queue(s) */
/* definition and creation of KeyStatusQueue */
const osMessageQueueAttr_t KeyStatusQueue_attributes = {
.name = "KeyStatusQueue"
};
KeyStatusQueueHandle = osMessageQueueNew (4, sizeof(uint8_t), &KeyStatusQueue_attributes);
/* USER CODE BEGIN RTOS_QUEUES */
/* add queues, ... */
/* USER CODE END RTOS_QUEUES */
......@@ -101,23 +109,23 @@ osKernelInitialize();
/* definition and creation of LEDTask */
const osThreadAttr_t LEDTask_attributes = {
.name = "LEDTask",
.priority = (osPriority_t) osPriorityNormal,
.stack_size = 128
.priority = (osPriority_t) osPriorityNormal5,
.stack_size = 512
};
LEDTaskHandle = osThreadNew(StartLEDTask, NULL, &LEDTask_attributes);
/* definition and creation of KeyScanTask */
const osThreadAttr_t KeyScanTask_attributes = {
.name = "KeyScanTask",
.priority = (osPriority_t) osPriorityNormal,
.stack_size = 128
.priority = (osPriority_t) osPriorityNormal3,
.stack_size = 512
};
KeyScanTaskHandle = osThreadNew(StartKeyScanTask, NULL, &KeyScanTask_attributes);
/* definition and creation of UartTask */
const osThreadAttr_t UartTask_attributes = {
.name = "UartTask",
.priority = (osPriority_t) osPriorityNormal,
.priority = (osPriority_t) osPriorityNormal3,
.stack_size = 512
};
UartTaskHandle = osThreadNew(StartUartTask, NULL, &UartTask_attributes);
......@@ -125,16 +133,16 @@ osKernelInitialize();
/* definition and creation of CoreTask */
const osThreadAttr_t CoreTask_attributes = {
.name = "CoreTask",
.priority = (osPriority_t) osPriorityNormal,
.stack_size = 128
.priority = (osPriority_t) osPriorityNormal3,
.stack_size = 512
};
CoreTaskHandle = osThreadNew(StartCoreTask, NULL, &CoreTask_attributes);
/* definition and creation of SensorTask */
const osThreadAttr_t SensorTask_attributes = {
.name = "SensorTask",
.priority = (osPriority_t) osPriorityNormal,
.stack_size = 128
.priority = (osPriority_t) osPriorityNormal5,
.stack_size = 512
};
SensorTaskHandle = osThreadNew(StartSensorTask, NULL, &SensorTask_attributes);
......@@ -154,13 +162,15 @@ osKernelInitialize();
void StartLEDTask(void *argument)
{
/* USER CODE BEGIN StartLEDTask */
uint8_t keyState;
/* Infinite loop */
for(;;)
{
// ledState = ledState % LED_TOTAL_STATE_NUM;
// LED_StateControl(ledState);
osDelay(1);
if (osMessageQueueGet(KeyStatusQueueHandle, &keyState, 0, portMAX_DELAY) == osOK) {
ledState = (keyState - 1) % LED_TOTAL_STATE_NUM;
LED_StateControl(ledState);
}
osDelay(10);
}
/* USER CODE END StartLEDTask */
}
......@@ -186,9 +196,8 @@ void StartKeyScanTask(void *argument)
osDelay(10);
if (KEY1_read() == KEY1_UP)
{
LED2_Reset();
LED3_Close();
count = 0;
flag = 0;
goto DONE;
}
if(count < 500)// 0 ~ 5 000 ms
......@@ -196,7 +205,7 @@ void StartKeyScanTask(void *argument)
flag = KEY_PRESS_0_5S;
if(count % 10 == 0)
{
HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin);
}
}
else if((count >= 500) && (count < 1000))// 5 000 ~ 10 000 ms
......@@ -204,7 +213,7 @@ void StartKeyScanTask(void *argument)
flag = KEY_PRESS_5_10S;
if(count % 30 == 0)
{
HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin);
}
}
else if((count >= 1000) && (count < 1500))// 10 000 ~ 15 000 ms
......@@ -212,7 +221,7 @@ void StartKeyScanTask(void *argument)
flag = KEY_PRESS_10_15S;
if(count % 50 == 0)
{
HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin);
}
}
else
......@@ -223,7 +232,14 @@ void StartKeyScanTask(void *argument)
}
else
{
LED2_Reset();
if (flag != 0) // key state changed
{
if (osMessageQueuePut(KeyStatusQueueHandle, &flag, 0, 100) != osOK)
{
mprintf("queue send message failed\r\n");
}
}
LED3_Close();
count = 0;
flag = 0;
}
......
......@@ -52,6 +52,9 @@ void MX_GPIO_Init(void)
HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_SET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB, LED2_Pin|LED1_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin : PtPin */
......@@ -61,6 +64,13 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(BEEP_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = LED3_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(LED3_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pins : PBPin PBPin */
GPIO_InitStruct.Pin = LED2_Pin|LED1_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
......
......@@ -187,12 +187,12 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
/* USER CODE BEGIN Callback 1 */
if(htim->Instance == TIM3)
{
mprintf("TIM3 elapsed\r\n");
// mprintf("TIM3 elapsed\r\n");
BEEP_call();
}
if(htim->Instance == TIM6)
{
mprintf("TIM6 elapsed\r\n");
// mprintf("TIM6 elapsed\r\n");
HAL_TIM_Base_Stop_IT(&htim6);
BEEP_close();
}
......
#MicroXplorer Configuration settings - do not modify
FREERTOS.FootprintOK=false
FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE,configTIMER_TASK_STACK_DEPTH,FootprintOK
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
FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE,configTIMER_TASK_STACK_DEPTH,FootprintOK,Queues01
FREERTOS.Queues01=KeyStatusQueue,4,uint8_t,0,Dynamic,NULL,NULL
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
FREERTOS.configTIMER_TASK_STACK_DEPTH=128
FREERTOS.configTOTAL_HEAP_SIZE=2560
File.Version=6
......@@ -21,14 +22,15 @@ Mcu.Package=LQFP48
Mcu.Pin0=PC14-OSC32_IN
Mcu.Pin1=PC15-OSC32_OUT
Mcu.Pin10=PA14
Mcu.Pin11=PB6
Mcu.Pin12=PB7
Mcu.Pin13=PB8
Mcu.Pin14=PB9
Mcu.Pin15=VP_FREERTOS_VS_CMSIS_V2
Mcu.Pin16=VP_SYS_VS_tim1
Mcu.Pin17=VP_TIM3_VS_no_output1
Mcu.Pin18=VP_TIM6_VS_ClockSourceINT
Mcu.Pin11=PB5
Mcu.Pin12=PB6
Mcu.Pin13=PB7
Mcu.Pin14=PB8
Mcu.Pin15=PB9
Mcu.Pin16=VP_FREERTOS_VS_CMSIS_V2
Mcu.Pin17=VP_SYS_VS_tim1
Mcu.Pin18=VP_TIM3_VS_no_output1
Mcu.Pin19=VP_TIM6_VS_ClockSourceINT
Mcu.Pin2=PF0-OSC_IN
Mcu.Pin3=PF1-OSC_OUT
Mcu.Pin4=PA2
......@@ -37,7 +39,7 @@ Mcu.Pin6=PA9
Mcu.Pin7=PA10
Mcu.Pin8=PA12
Mcu.Pin9=PA13
Mcu.PinsNb=19
Mcu.PinsNb=20
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F030C8Tx
......@@ -80,6 +82,13 @@ PA9.GPIO_PuPd=GPIO_PULLUP
PA9.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
PB5.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label
PB5.GPIO_Label=LED3
PB5.GPIO_PuPd=GPIO_PULLUP
PB5.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PB5.Locked=true
PB5.PinState=GPIO_PIN_SET
PB5.Signal=GPIO_Output
PB6.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label
PB6.GPIO_Label=LED2
PB6.GPIO_PuPd=GPIO_PULLDOWN
......