Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
张亚玄
/
STM32Test
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
037006bb
authored
2019-11-01 22:41:01 +0800
by
张亚玄
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
add new key & led
1 parent
fc8c2e27
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
84 additions
and
44 deletions
Core/Inc/Hardware/led.h
Core/Inc/main.h
Core/Src/Hardware/led.c
Core/Src/freertos.c
Core/Src/gpio.c
Core/Src/main.c
STM32Test.ioc
Core/Inc/Hardware/led.h
View file @
037006b
...
...
@@ -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
;
...
...
Core/Inc/main.h
View file @
037006b
...
...
@@ -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
...
...
Core/Src/Hardware/led.c
View file @
037006b
...
...
@@ -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:
...
...
Core/Src/freertos.c
View file @
037006b
...
...
@@ -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
)
osPriorityNormal
5
,
.
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
)
osPriorityNormal
3
,
.
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
)
osPriorityNormal
3
,
.
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
)
osPriorityNormal
3
,
.
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
)
osPriorityNormal
5
,
.
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
)
{
LED
2_Reset
();
LED
3_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
(
LED
2_GPIO_Port
,
LED2
_Pin
);
HAL_GPIO_TogglePin
(
LED
3_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
(
LED
2_GPIO_Port
,
LED2
_Pin
);
HAL_GPIO_TogglePin
(
LED
3_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
(
LED
2_GPIO_Port
,
LED2
_Pin
);
HAL_GPIO_TogglePin
(
LED
3_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
;
}
...
...
Core/Src/gpio.c
View file @
037006b
...
...
@@ -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
;
...
...
Core/Src/main.c
View file @
037006b
...
...
@@ -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
();
}
...
...
STM32Test.ioc
View file @
037006b
#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
...
...
Please
register
or
sign in
to post a comment