pikapython/package/PikaPiZero/PikaPiZero_KEY.c
2021-11-21 09:41:57 +08:00

48 lines
1.3 KiB
C

#include "PikaPiZero_KEY.h"
#include "main.h"
int PikaPiZero_KEY_get(PikaObj *self){
/* SW0 */
if(LL_GPIO_IsInputPinSet(GPIOA, LL_GPIO_PIN_0)){
return 0;
}
/* SW1 */
if(!LL_GPIO_IsInputPinSet(GPIOA, LL_GPIO_PIN_15)){
return 1;
}
/* SW2 */
if(!LL_GPIO_IsInputPinSet(GPIOB, LL_GPIO_PIN_6)){
return 2;
}
/* SW3 */
if(!LL_GPIO_IsInputPinSet(GPIOC, LL_GPIO_PIN_13)){
return 3;
}
return -1;
}
void PikaPiZero_KEY_init(PikaObj *self){
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
/*Configure GPIO*/
/* SW0 */
GPIO_InitStruct.Pin = LL_GPIO_PIN_0;
GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* SW1 */
GPIO_InitStruct.Pin = LL_GPIO_PIN_15;
GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* SW3 */
GPIO_InitStruct.Pin = LL_GPIO_PIN_13;
LL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/* SW2 */
GPIO_InitStruct.Pin = LL_GPIO_PIN_6;
LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}