Initial commit.
Signed-off-by: Yilin Sun <imi415@imi.moe>
This commit is contained in:
parent
931a8b4b2e
commit
433dee949b
|
@ -1,6 +1,6 @@
|
|||
cmake_minimum_required(VERSION 3.10)
|
||||
|
||||
project(air001_template)
|
||||
project(air001_bpc)
|
||||
|
||||
enable_language(CXX)
|
||||
enable_language(ASM)
|
||||
|
@ -56,6 +56,7 @@ set(TARGET_SOURCES
|
|||
"board/board.c"
|
||||
"src/py32f0xx_hal_msp.c"
|
||||
"src/py32f0xx_it.c"
|
||||
"src/app_bpc.c"
|
||||
"src/app_syscalls.c"
|
||||
"src/main.c"
|
||||
)
|
||||
|
|
1
SDK
Submodule
1
SDK
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 7e27dee1d5e90ea6f1316a7df4d72fc9fc280059
|
|
@ -3,14 +3,32 @@
|
|||
#include "py32f0xx_hal.h"
|
||||
|
||||
void BOARD_InitBootPins(void) {
|
||||
BOARD_InitLEDPins();
|
||||
BOARD_InitBPCPins();
|
||||
}
|
||||
|
||||
void BOARD_InitLEDPins(void) {
|
||||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||||
|
||||
GPIO_InitTypeDef init = {
|
||||
.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_3,
|
||||
.Pin = BOARD_LED_1_PIN | BOARD_LED_2_PIN | BOARD_LED_3_PIN,
|
||||
.Mode = GPIO_MODE_OUTPUT_PP,
|
||||
.Speed = GPIO_SPEED_FREQ_LOW,
|
||||
.Pull = GPIO_NOPULL,
|
||||
};
|
||||
|
||||
HAL_GPIO_Init(GPIOB, &init);
|
||||
HAL_GPIO_Init(BOARD_LED_1_PORT, &init);
|
||||
}
|
||||
|
||||
void BOARD_InitBPCPins(void) {
|
||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||
|
||||
GPIO_InitTypeDef init = {
|
||||
.Pin = BOARD_BPC_PON_PIN,
|
||||
.Mode = GPIO_MODE_OUTPUT_OD,
|
||||
.Speed = GPIO_SPEED_FREQ_LOW,
|
||||
.Pull = GPIO_NOPULL,
|
||||
};
|
||||
|
||||
HAL_GPIO_Init(BOARD_BPC_PON_PORT, &init);
|
||||
}
|
|
@ -1,14 +1,31 @@
|
|||
#ifndef BOARD_H
|
||||
#define BOARD_H
|
||||
|
||||
/* ==== LED ==== */
|
||||
#define BOARD_LED_1_PORT GPIOB
|
||||
#define BOARD_LED_2_PORT GPIOB
|
||||
#define BOARD_LED_3_PORT GPIOB
|
||||
|
||||
#define BOARD_LED_1_PIN GPIO_PIN_1
|
||||
#define BOARD_LED_2_PIN GPIO_PIN_0
|
||||
#define BOARD_LED_3_PIN_GPIO_PIN_3
|
||||
#define BOARD_LED_3_PIN GPIO_PIN_3
|
||||
|
||||
/* ==== UART ==== */
|
||||
#define BOARD_UART_TX_PORT GPIOA
|
||||
#define BOARD_UART_RX_PORT GPIOA
|
||||
|
||||
#define BOARD_UART_TX_PIN GPIO_PIN_2
|
||||
#define BOARD_UART_RX_PIN GPIO_PIN_3
|
||||
|
||||
/* ==== BPC ==== */
|
||||
#define BOARD_BPC_PON_PORT GPIOA
|
||||
#define BOARD_BPC_NTCO_PORT GPIOA
|
||||
|
||||
#define BOARD_BPC_PON_PIN GPIO_PIN_7
|
||||
#define BOARD_BPC_NTCO_PIN GPIO_PIN_4
|
||||
|
||||
void BOARD_InitBootPins(void);
|
||||
void BOARD_InitLEDPins(void);
|
||||
void BOARD_InitBPCPins(void);
|
||||
|
||||
#endif // BOARD_H
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
#ifndef MAIN_H
|
||||
#define MAIN_H
|
||||
|
||||
#include "board.h"
|
||||
|
||||
#include "py32f0xx_hal.h"
|
||||
|
||||
extern UART_HandleTypeDef huart1;
|
||||
extern TIM_HandleTypeDef htim14;
|
||||
|
||||
#endif // MAIN_H
|
||||
|
|
|
@ -44,7 +44,7 @@ extern "C" {
|
|||
#define HAL_GPIO_MODULE_ENABLED
|
||||
//#define HAL_IWDG_MODULE_ENABLED
|
||||
//#define HAL_WWDG_MODULE_ENABLED
|
||||
//#define HAL_TIM_MODULE_ENABLED
|
||||
#define HAL_TIM_MODULE_ENABLED
|
||||
#define HAL_DMA_MODULE_ENABLED
|
||||
//#define HAL_LPTIM_MODULE_ENABLED
|
||||
#define HAL_PWR_MODULE_ENABLED
|
||||
|
|
58
src/app_bpc.c
Normal file
58
src/app_bpc.c
Normal file
|
@ -0,0 +1,58 @@
|
|||
/* Board */
|
||||
#include "board.h"
|
||||
|
||||
/* App */
|
||||
#include "main.h"
|
||||
|
||||
#define APP_BPC_TIM_CHANNEL TIM_CHANNEL_1
|
||||
|
||||
int app_bpc_init(void) {
|
||||
/* Enable BPC module */
|
||||
HAL_GPIO_WritePin(BOARD_BPC_PON_PORT, BOARD_BPC_PON_PIN, 0U);
|
||||
|
||||
htim14.Instance = TIM14;
|
||||
htim14.Init.Prescaler = (HAL_RCC_GetPCLK1Freq() / 1000) - 1;
|
||||
htim14.Init.Period = 2500 - 1;
|
||||
htim14.Init.RepetitionCounter = 0;
|
||||
htim14.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
|
||||
htim14.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||
htim14.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||
|
||||
if (HAL_TIM_Base_Init(&htim14) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
TIM_IC_InitTypeDef ic_init = {
|
||||
.ICSelection = TIM_ICSELECTION_DIRECTTI,
|
||||
.ICPolarity = TIM_ICPOLARITY_BOTHEDGE,
|
||||
.ICPrescaler = TIM_ICPSC_DIV1,
|
||||
.ICFilter = 0,
|
||||
};
|
||||
|
||||
if (HAL_TIM_IC_ConfigChannel(&htim14, &ic_init, APP_BPC_TIM_CHANNEL) != HAL_OK) {
|
||||
return -2;
|
||||
}
|
||||
|
||||
/* Enable reload interrupt, for timeout detection */
|
||||
__HAL_TIM_ENABLE_IT(&htim14, TIM_IT_UPDATE);
|
||||
|
||||
if (HAL_TIM_IC_Start_IT(&htim14, APP_BPC_TIM_CHANNEL) != HAL_OK) {
|
||||
return -3;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
|
||||
if (htim->Instance == TIM14) {
|
||||
HAL_GPIO_TogglePin(BOARD_LED_2_PORT, BOARD_LED_2_PIN);
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) {
|
||||
if (htim->Instance == TIM14) {
|
||||
__HAL_TIM_SET_COUNTER(htim, 0U);
|
||||
|
||||
HAL_GPIO_TogglePin(BOARD_LED_1_PORT, BOARD_LED_1_PIN);
|
||||
}
|
||||
}
|
15
src/main.c
15
src/main.c
|
@ -7,7 +7,15 @@
|
|||
#include "app_syscalls.h"
|
||||
#include "main.h"
|
||||
|
||||
#define APP_SAMPLING_MOVING_AVG 100
|
||||
|
||||
UART_HandleTypeDef huart1;
|
||||
TIM_HandleTypeDef htim14;
|
||||
|
||||
static uint8_t s_moving_avg[APP_SAMPLING_MOVING_AVG];
|
||||
static volatile uint8_t s_moving_avg_ptr = 0U;
|
||||
|
||||
int app_bpc_init(void);
|
||||
|
||||
int main(void) {
|
||||
HAL_Init();
|
||||
|
@ -18,8 +26,11 @@ int main(void) {
|
|||
|
||||
printf("Hello world.\r\n");
|
||||
|
||||
app_bpc_init();
|
||||
|
||||
for (;;) {
|
||||
HAL_GPIO_TogglePin(BOARD_LED_1_PORT, BOARD_LED_1_PIN);
|
||||
HAL_Delay(500);
|
||||
__WFI();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -38,20 +38,42 @@ void HAL_MspInit(void) {
|
|||
|
||||
void HAL_UART_MspInit(UART_HandleTypeDef *huart) {
|
||||
if (huart == &huart1) {
|
||||
__HAL_RCC_USART1_CLK_ENABLE();
|
||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStruct;
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_2 | GPIO_PIN_3;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
GPIO_InitStruct.Alternate = GPIO_AF1_USART1;
|
||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||
GPIO_InitTypeDef GPIO_InitStruct = {
|
||||
.Pin = BOARD_UART_TX_PIN | BOARD_UART_RX_PIN,
|
||||
.Mode = GPIO_MODE_AF_PP,
|
||||
.Pull = GPIO_NOPULL,
|
||||
.Speed = GPIO_SPEED_FREQ_LOW,
|
||||
.Alternate = GPIO_AF1_USART1,
|
||||
};
|
||||
HAL_GPIO_Init(BOARD_UART_TX_PORT, &GPIO_InitStruct);
|
||||
|
||||
HAL_NVIC_SetPriority(USART1_IRQn, 0, 1);
|
||||
__HAL_RCC_USART1_CLK_ENABLE();
|
||||
|
||||
HAL_NVIC_SetPriority(USART1_IRQn, 4, 0);
|
||||
HAL_NVIC_EnableIRQ(USART1_IRQn);
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim) {
|
||||
if (htim->Instance == TIM14) {
|
||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStruct = {
|
||||
.Pin = BOARD_BPC_NTCO_PIN,
|
||||
.Mode = GPIO_MODE_AF_PP,
|
||||
.Pull = GPIO_NOPULL,
|
||||
.Speed = GPIO_SPEED_FREQ_LOW,
|
||||
.Alternate = GPIO_AF4_TIM14,
|
||||
};
|
||||
|
||||
HAL_GPIO_Init(BOARD_BPC_NTCO_PORT, &GPIO_InitStruct);
|
||||
|
||||
__HAL_RCC_TIM14_CLK_ENABLE();
|
||||
HAL_NVIC_SetPriority(TIM14_IRQn, 3, 0);
|
||||
HAL_NVIC_EnableIRQ(TIM14_IRQn);
|
||||
}
|
||||
}
|
||||
|
||||
/************************ (C) COPYRIGHT Puya *****END OF FILE******************/
|
||||
|
|
|
@ -89,4 +89,12 @@ void USART1_IRQHandler(void)
|
|||
HAL_UART_IRQHandler(&huart1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles TIM14 Interrupt .
|
||||
*/
|
||||
void TIM14_IRQHandler(void)
|
||||
{
|
||||
HAL_TIM_IRQHandler(&htim14);
|
||||
}
|
||||
|
||||
/************************ (C) COPYRIGHT Puya *****END OF FILE******************/
|
||||
|
|
Loading…
Reference in New Issue
Block a user