added new timer for util

stable
Penguin 2 years ago
parent f4a88df448
commit ff0e117809

@ -59,6 +59,7 @@ void DMA1_Channel5_IRQHandler(void);
void USART1_IRQHandler(void);
void USART2_IRQHandler(void);
void TIM6_DAC_IRQHandler(void);
void TIM7_IRQHandler(void);
/* USER CODE BEGIN EFP */
/* USER CODE END EFP */

@ -47,16 +47,17 @@
/* Private variables ---------------------------------------------------------*/
TIM_HandleTypeDef htim2;
TIM_HandleTypeDef htim6;
TIM_HandleTypeDef htim7;
UART_HandleTypeDef huart1;
UART_HandleTypeDef huart2;
DMA_HandleTypeDef hdma_usart1_rx;
/* USER CODE BEGIN PV */
volatile uint8_t huart2_rxc;
volatile uint8_t huart1_rxc;
static volatile uint32_t sys_time = 0;
static volatile bool b_timer_struck = false;
uint8_t huart2_rxc;
uint8_t huart1_rxc;
static uint32_t sys_time = 0;
static bool b_timer_struck = false;
/* USER CODE END PV */
@ -68,6 +69,7 @@ static void MX_USART2_UART_Init(void);
static void MX_DMA_Init(void);
static void MX_USART1_UART_Init(void);
static void MX_TIM6_Init(void);
static void MX_TIM7_Init(void);
/* USER CODE BEGIN PFP */
static void UART2_RxCpltCallback(UART_HandleTypeDef *huart);
@ -111,11 +113,12 @@ int main(void)
MX_DMA_Init();
MX_USART1_UART_Init();
MX_TIM6_Init();
MX_TIM7_Init();
/* USER CODE BEGIN 2 */
huart2.RxCpltCallback = UART2_RxCpltCallback;
p_uart_init(&huart2);
p_serial_mgr_init(&huart1);
p_serial_mgr_init(&huart1, &hdma_usart1_rx);
// HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);
// HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4);
@ -203,7 +206,7 @@ void SystemClock_Config(void)
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_MSI;
RCC_OscInitStruct.PLL.PLLM = 1;
RCC_OscInitStruct.PLL.PLLN = 16;
RCC_OscInitStruct.PLL.PLLN = 36;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV7;
RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
@ -220,7 +223,7 @@ void SystemClock_Config(void)
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
{
Error_Handler();
}
@ -301,9 +304,9 @@ static void MX_TIM6_Init(void)
/* USER CODE END TIM6_Init 1 */
htim6.Instance = TIM6;
htim6.Init.Prescaler = 127;
htim6.Init.Prescaler = 1000;
htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
htim6.Init.Period = 249;
htim6.Init.Period = 72;
htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
{
@ -320,6 +323,43 @@ static void MX_TIM6_Init(void)
/* USER CODE END TIM6_Init 2 */
}
/**
* @brief TIM7 Initialization Function
* @param None
* @retval None
*/
static void MX_TIM7_Init(void)
{
/* USER CODE BEGIN TIM7_Init 0 */
/* USER CODE END TIM7_Init 0 */
TIM_MasterConfigTypeDef sMasterConfig = {0};
/* USER CODE BEGIN TIM7_Init 1 */
/* USER CODE END TIM7_Init 1 */
htim7.Instance = TIM7;
htim7.Init.Prescaler = 1000;
htim7.Init.CounterMode = TIM_COUNTERMODE_UP;
htim7.Init.Period = 72;
htim7.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_Base_Init(&htim7) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim7, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM7_Init 2 */
/* USER CODE END TIM7_Init 2 */
}
/**
* @brief USART1 Initialization Function
* @param None
@ -434,18 +474,13 @@ void UART2_RxCpltCallback(UART_HandleTypeDef *huart)
HAL_UART_Transmit(&huart1, &huart2_rxc, 1, 100);
HAL_UART_Receive_IT(&huart2, &huart2_rxc, 1);
}
// void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
// {
// else if (huart == &huart2)
// {
// }
// }
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
sys_time += 1;
if (++sys_time % 250 == 0)
sys_time++;
if (sys_time % 1000 == 0)
{
PDEBUG("%d\n", sys_time);
b_timer_struck = true;
}
}

@ -123,6 +123,20 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
/* USER CODE END TIM6_MspInit 1 */
}
else if(htim_base->Instance==TIM7)
{
/* USER CODE BEGIN TIM7_MspInit 0 */
/* USER CODE END TIM7_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_TIM7_CLK_ENABLE();
/* TIM7 interrupt Init */
HAL_NVIC_SetPriority(TIM7_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(TIM7_IRQn);
/* USER CODE BEGIN TIM7_MspInit 1 */
/* USER CODE END TIM7_MspInit 1 */
}
}
@ -197,6 +211,20 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
/* USER CODE END TIM6_MspDeInit 1 */
}
else if(htim_base->Instance==TIM7)
{
/* USER CODE BEGIN TIM7_MspDeInit 0 */
/* USER CODE END TIM7_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_TIM7_CLK_DISABLE();
/* TIM7 interrupt DeInit */
HAL_NVIC_DisableIRQ(TIM7_IRQn);
/* USER CODE BEGIN TIM7_MspDeInit 1 */
/* USER CODE END TIM7_MspDeInit 1 */
}
}
@ -247,7 +275,7 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
hdma_usart1_rx.Init.Request = DMA_REQUEST_2;
hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE;
hdma_usart1_rx.Init.MemInc = DMA_MINC_DISABLE;
hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
hdma_usart1_rx.Init.Mode = DMA_NORMAL;

@ -56,6 +56,7 @@
/* External variables --------------------------------------------------------*/
extern TIM_HandleTypeDef htim6;
extern TIM_HandleTypeDef htim7;
extern DMA_HandleTypeDef hdma_usart1_rx;
extern UART_HandleTypeDef huart1;
extern UART_HandleTypeDef huart2;
@ -257,6 +258,20 @@ void TIM6_DAC_IRQHandler(void)
/* USER CODE END TIM6_DAC_IRQn 1 */
}
/**
* @brief This function handles TIM7 global interrupt.
*/
void TIM7_IRQHandler(void)
{
/* USER CODE BEGIN TIM7_IRQn 0 */
/* USER CODE END TIM7_IRQn 0 */
HAL_TIM_IRQHandler(&htim7);
/* USER CODE BEGIN TIM7_IRQn 1 */
/* USER CODE END TIM7_IRQn 1 */
}
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */

@ -1,5 +1,5 @@
##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [3.16.0] date: [Mon May 02 17:19:20 CDT 2022]
# File automatically-generated by tool: [projectgenerator] version: [3.16.0] date: [Thu Jun 30 14:16:51 CDT 2022]
##########################################################################################################################
# ------------------------------------------------

@ -26,13 +26,13 @@
"-g3",
"-gdwarf-2",
"-D_DEBUG",
"-MFbuild/p_serial_mgr.d",
"-Wa,-a,-ad,-alms=build/p_serial_mgr.lst",
"-MFbuild/main.d",
"-Wa,-a,-ad,-alms=build/main.lst",
"-o",
"build/p_serial_mgr.o",
"shared/drivers/p_serial_mgr.c"
"build/main.o",
"Core/Src/main.c"
],
"directory": "/storage/Shared/Projects/Penguinator/motor_controller",
"file": "shared/drivers/p_serial_mgr.c"
"file": "Core/Src/main.c"
}
]

@ -27174,3 +27174,544 @@ A debugging session is active.
Quit anyway? (y or n) [answered Y; input not from terminal]
[Inferior 1 (Remote target) detached]
0x080062e8 in p_serial_mgr_init (huart=0x20000b10 <huart2>) at shared/drivers/p_serial_mgr.c:55
55 }
### Assembly ############################################################################################################################################################################################################################
0x080062de p_serial_mgr_init+26 lsrs r0, r0, #32
0x080062e0 p_serial_mgr_init+28 push {r7, lr}
0x080062e2 p_serial_mgr_init+30 sub sp, #16
0x080062e4 p_serial_mgr_init+32 add r7, sp, #0
0x080062e6 p_serial_mgr_init+34 ldr r3, [pc, #236] ; (0x80063d4 <p_serial_mgr_service+228>)
0x080062e8 p_serial_mgr_init+36 ldrb r3, [r3, #0]
0x080062ea p_serial_mgr_init+38 cmp r3, #1
0x080062ec p_serial_mgr_init+40 bne.n 0x80063a2 <p_serial_mgr_service+178>
0x080062ee p_serial_mgr_init+42 nop
~
### Breakpoints #########################################################################################################################################################################################################################
### Expressions #########################################################################################################################################################################################################################
### History #############################################################################################################################################################################################################################
### Memory ##############################################################################################################################################################################################################################
### Registers ###########################################################################################################################################################################################################################
r0 0x00000000 r3 0x20002050 r6 0x00000000 r9 0x00000000 r12 0xffffffff pc 0x080062e8 msp 0x2000ffd8 basepri 0x00
r1 0x40013800 r4 0x20002094 r7 0x2000ffd8 r10 0x00000000 sp 0x2000ffd8 xPSR 0x01030000 psp 0x00000000 faultmask 0x00
r2 0x0000002d r5 0x00000000 r8 0x00000000 r11 0x00000000 lr 0x080011f1 fpscr 0x00000010 primask 0x00 control 0x04
### Source ##############################################################################################################################################################################################################################
45 else
46 {
47 sstate = SS_ERR;
48 }
49 }
50
51 void p_serial_mgr_init(UART_HandleTypeDef *huart)
52 {
53 _serial_huart_inst = huart;
54 _serial_huart_inst->RxCpltCallback = UART1_RxCpltCallback;
55 }
56 void p_serial_mgr_service(void)
57 {
58 if (sstate == SS_START)
59 {
60 while (HAL_UART_Receive(_serial_huart_inst, &sbuffer[active_buffer][1], MAX_MESSAGE_LEN - 2, 20) != HAL_OK) {}
61 for (int ind = 0; ind < 24; ind++)
62 {
63 PDEBUG("[%d]: 0x%02x\n", ind, sbuffer[active_buffer][ind]);
64 }
### Stack ###############################################################################################################################################################################################################################
[0] from 0x080062e8 in p_serial_mgr_init+36 at shared/drivers/p_serial_mgr.c:55
[1] from 0x080011f0 in main+136 at Core/Src/main.c:141
### Threads #############################################################################################################################################################################################################################
[1] id 0 from 0x080062e8 in p_serial_mgr_init+36 at shared/drivers/p_serial_mgr.c:55
### Variables ###########################################################################################################################################################################################################################
arg huart = 0x20000b10 <huart2>: {Instance = 0x40004400,Init = {BaudRate = 115200,WordLength = 0,StopBi…
#########################################################################################################################################################################################################################################
Loading section .isr_vector, size 0x190 lma 0x8000000
Loading section .text, size 0xb720 lma 0x80001c0
Loading section .rodata, size 0x480 lma 0x800b8e0
Loading section .ARM, size 0x8 lma 0x800bd60
Loading section .init_array, size 0x8 lma 0x800bd68
Loading section .fini_array, size 0x8 lma 0x800bd70
Loading section .data, size 0x9a8 lma 0x800bd78
Start address 0x08006470, load size 50928
Transfer rate: 31 KB/sec, 5658 bytes/write.
Unable to match requested speed 500 kHz, using 480 kHz
Unable to match requested speed 500 kHz, using 480 kHz
A debugging session is active.
Inferior 1 [Remote target] will be detached.
Quit anyway? (y or n) [answered Y; input not from terminal]
[Inferior 1 (Remote target) detached]
UART_WaitOnFlagUntilTimeout (huart=0x20000a5c <huart1>, Flag=32, Status=RESET, Tickstart=1018847, Timeout=20) at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c:3536
3536 if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
### Assembly ############################################################################################################################################################################################################################
0x08005972 UART_WaitOnFlagUntilTimeout+24 beq.w 0x8005ab8 <UART_WaitOnFlagUntilTimeout+350>
0x08005976 UART_WaitOnFlagUntilTimeout+28 bl 0x8002ba8 <HAL_GetTick>
0x0800597a UART_WaitOnFlagUntilTimeout+32 mov r2, r0
0x0800597c UART_WaitOnFlagUntilTimeout+34 ldr r3, [r7, #0]
0x0800597e UART_WaitOnFlagUntilTimeout+36 subs r3, r2, r3
0x08005980 UART_WaitOnFlagUntilTimeout+38 ldr r2, [r7, #120] ; 0x78
0x08005982 UART_WaitOnFlagUntilTimeout+40 cmp r2, r3
0x08005984 UART_WaitOnFlagUntilTimeout+42 bcc.n 0x800598c <UART_WaitOnFlagUntilTimeout+50>
0x08005986 UART_WaitOnFlagUntilTimeout+44 ldr r3, [r7, #120] ; 0x78
0x08005988 UART_WaitOnFlagUntilTimeout+46 cmp r3, #0
### Breakpoints #########################################################################################################################################################################################################################
### Expressions #########################################################################################################################################################################################################################
### History #############################################################################################################################################################################################################################
### Memory ##############################################################################################################################################################################################################################
### Registers ###########################################################################################################################################################################################################################
r0 0x000f8be6 r3 0x00000007 r6 0x00000000 r9 0x00000000 r12 0xffffffff pc 0x08005980 msp 0x2000ff30 basepri 0x00
r1 0x00000020 r4 0x20002094 r7 0x2000ff30 r10 0x00000000 sp 0x2000ff30 xPSR 0x21010000 psp 0x00000000 faultmask 0x00
r2 0x000f8be6 r5 0x00000000 r8 0x00000000 r11 0x00000000 lr 0x0800597b fpscr 0x00000010 primask 0x00 control 0x04
### Source ##############################################################################################################################################################################################################################
3526 */
3527 HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status,
3528 uint32_t Tickstart, uint32_t Timeout)
3529 {
3530 /* Wait until flag is set */
3531 while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
3532 {
3533 /* Check for the Timeout */
3534 if (Timeout != HAL_MAX_DELAY)
3535 {
3536 if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
3537 {
3538 /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error)
3539 interrupts for the interrupt process */
3540 #if defined(USART_CR1_FIFOEN)
3541 ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE |
3542 USART_CR1_TXEIE_TXFNFIE));
3543 #else
3544 ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
3545 #endif /* USART_CR1_FIFOEN */
### Stack ###############################################################################################################################################################################################################################
[0] from 0x08005980 in UART_WaitOnFlagUntilTimeout+38 at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c:3536
[1] from 0x08004ae6 in HAL_UART_Receive+298 at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c:1286
[2] from 0x08006322 in p_serial_mgr_service+50 at shared/drivers/p_serial_mgr.c:60
[3] from 0x080011f0 in main+136 at Core/Src/main.c:141
### Threads #############################################################################################################################################################################################################################
[1] id 0 from 0x08005980 in UART_WaitOnFlagUntilTimeout+38 at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c:3536
### Variables ###########################################################################################################################################################################################################################
arg huart = 0x20000a5c <huart1>: {Instance = 0x40013800,Init = {BaudRate = 115200,WordLength = 0,StopBi…, Flag = 32, Status = RESET, Tickstart = 1018847, Timeout = 20
#########################################################################################################################################################################################################################################
Loading section .isr_vector, size 0x190 lma 0x8000000
Loading section .text, size 0xb730 lma 0x80001c0
Loading section .rodata, size 0x480 lma 0x800b8f0
Loading section .ARM, size 0x8 lma 0x800bd70
Loading section .init_array, size 0x8 lma 0x800bd78
Loading section .fini_array, size 0x8 lma 0x800bd80
Loading section .data, size 0x9a8 lma 0x800bd88
Start address 0x0800647c, load size 50944
Transfer rate: 31 KB/sec, 5660 bytes/write.
Unable to match requested speed 500 kHz, using 480 kHz
Unable to match requested speed 500 kHz, using 480 kHz
A debugging session is active.
Inferior 1 [Remote target] will be detached.
Quit anyway? (y or n) [answered Y; input not from terminal]
[Inferior 1 (Remote target) detached]
0x08005abe in UART_WaitOnFlagUntilTimeout (huart=0x20000a5c <huart1>, Flag=32, Status=RESET, Tickstart=1171099, Timeout=20) at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c:3569
3569 ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
### Assembly ############################################################################################################################################################################################################################
0x08005ab4 UART_WaitOnFlagUntilTimeout+230 movs r3, #3
0x08005ab6 UART_WaitOnFlagUntilTimeout+232 b.n 0x8005ada <UART_WaitOnFlagUntilTimeout+268>
0x08005ab8 UART_WaitOnFlagUntilTimeout+234 ldr r3, [r7, #12]
0x08005aba UART_WaitOnFlagUntilTimeout+236 ldr r3, [r3, #0]
0x08005abc UART_WaitOnFlagUntilTimeout+238 ldr r2, [r3, #28]
0x08005abe UART_WaitOnFlagUntilTimeout+240 ldr r3, [r7, #8]
0x08005ac0 UART_WaitOnFlagUntilTimeout+242 ands r3, r2
0x08005ac2 UART_WaitOnFlagUntilTimeout+244 ldr r2, [r7, #8]
0x08005ac4 UART_WaitOnFlagUntilTimeout+246 cmp r2, r3
0x08005ac6 UART_WaitOnFlagUntilTimeout+248 ite eq
### Breakpoints #########################################################################################################################################################################################################################
### Expressions #########################################################################################################################################################################################################################
### History #############################################################################################################################################################################################################################
### Memory ##############################################################################################################################################################################################################################
### Registers ###########################################################################################################################################################################################################################
r0 0x0011de9b r3 0x40013800 r6 0x00000000 r9 0x00000000 r12 0xffffffff pc 0x08005abe msp 0x2000ff30 basepri 0x00
r1 0x00000020 r4 0x20002094 r7 0x2000ff30 r10 0x00000000 sp 0x2000ff30 xPSR 0x81030000 psp 0x00000000 faultmask 0x00
r2 0x006210d0 r5 0x00000000 r8 0x00000000 r11 0x00000000 lr 0x0800597b fpscr 0x00000010 primask 0x00 control 0x04
### Source ##############################################################################################################################################################################################################################
3559 {
3560 /* Clear Receiver Timeout flag*/
3561 __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF);
3562
3563 /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error)
3564 interrupts for the interrupt process */
3565 #if defined(USART_CR1_FIFOEN)
3566 ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE |
3567 USART_CR1_TXEIE_TXFNFIE));
3568 #else
3569 ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
3570 #endif
3571 ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
3572
3573 huart->gState = HAL_UART_STATE_READY;
3574 huart->RxState = HAL_UART_STATE_READY;
3575 huart->ErrorCode = HAL_UART_ERROR_RTO;
3576
3577 /* Process Unlocked */
3578 __HAL_UNLOCK(huart);
### Stack ###############################################################################################################################################################################################################################
[0] from 0x08005abe in UART_WaitOnFlagUntilTimeout+240 at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c:3569
[1] from 0x08004ae6 in HAL_UART_Transmit+230 at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c:1204
[2] from 0x08006322 in UART_RxISR_8BIT+356 at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c:4443
[3] from 0x00000000
### Threads #############################################################################################################################################################################################################################
[1] id 0 from 0x08005abe in UART_WaitOnFlagUntilTimeout+240 at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c:3569
### Variables ###########################################################################################################################################################################################################################
arg huart = 0x20000a5c <huart1>: {Instance = 0x40013800,Init = {BaudRate = 115200,WordLength = 0,StopBi…, Flag = 32, Status = RESET, Tickstart = 1171099, Timeout = 20
loc val = 134222321
#########################################################################################################################################################################################################################################
Loading section .isr_vector, size 0x190 lma 0x8000000
Loading section .text, size 0xba20 lma 0x80001c0
Loading section .rodata, size 0x450 lma 0x800bbe0
Loading section .ARM, size 0x8 lma 0x800c030
Loading section .init_array, size 0x8 lma 0x800c038
Loading section .fini_array, size 0x8 lma 0x800c040
Loading section .data, size 0x9a8 lma 0x800c048
Start address 0x08006770, load size 51648
Transfer rate: 31 KB/sec, 5738 bytes/write.
Unable to match requested speed 500 kHz, using 480 kHz
Unable to match requested speed 500 kHz, using 480 kHz
A debugging session is active.
Inferior 1 [Remote target] will be detached.
Quit anyway? (y or n) [answered Y; input not from terminal]
[Inferior 1 (Remote target) detached]
0x08002bac in HAL_IncTick () at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c:330
330 }
### Assembly ############################################################################################################################################################################################################################
0x08002ba2 HAL_IncTick+26 nop
0x08002ba4 HAL_IncTick+28 movs r4, r0
0x08002ba6 HAL_IncTick+30 movs r0, #0
0x08002ba8 HAL_IncTick+32 lsrs r0, r3, #16
0x08002baa HAL_IncTick+34 movs r0, #0
0x08002bac HAL_IncTick+36 push {r7}
0x08002bae HAL_IncTick+38 add r7, sp, #0
~
~
~
### Breakpoints #########################################################################################################################################################################################################################
### Expressions #########################################################################################################################################################################################################################
### History #############################################################################################################################################################################################################################
### Memory ##############################################################################################################################################################################################################################
### Registers ###########################################################################################################################################################################################################################
r0 0x00009d7f r3 0x00000012 r6 0x00000000 r9 0x00000000 r12 0xffffffff pc 0x08002bac msp 0x2000ffd0 basepri 0x00
r1 0x00000040 r4 0x2000206c r7 0x2000ffd0 r10 0x00000000 sp 0x2000ffd0 xPSR 0x21000000 psp 0x00000000 faultmask 0x00
r2 0x00000065 r5 0x00000000 r8 0x00000000 r11 0x00000000 lr 0x08002bf1 fpscr 0x00000010 primask 0x00 control 0x04
### Source ##############################################################################################################################################################################################################################
320 * used as application time base.
321 * @note In the default implementation, this variable is incremented each 1ms
322 * in SysTick ISR.
323 * @note This function is declared as __weak to be overwritten in case of other
324 * implementations in user file.
325 * @retval None
326 */
327 __weak void HAL_IncTick(void)
328 {
329 uwTick += (uint32_t)uwTickFreq;
330 }
331
332 /**
333 * @brief Provide a tick value in millisecond.
334 * @note This function is declared as __weak to be overwritten in case of other
335 * implementations in user file.
336 * @retval tick value
337 */
338 __weak uint32_t HAL_GetTick(void)
339 {
### Stack ###############################################################################################################################################################################################################################
[0] from 0x08002bac in HAL_IncTick+36 at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c:330
[1] from 0x08002bf0 in HAL_Delay+40 at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c:413
[2] from 0x08006706 in p_serial_mgr_service+6 at shared/drivers/p_serial_mgr.c:56
[3] from 0x080011f2 in main+138 at Core/Src/main.c:141
### Threads #############################################################################################################################################################################################################################
[1] id 0 from 0x08002bac in HAL_IncTick+36 at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c:330
### Variables ###########################################################################################################################################################################################################################
#########################################################################################################################################################################################################################################
Loading section .isr_vector, size 0x190 lma 0x8000000
Loading section .text, size 0xba28 lma 0x80001c0
Loading section .rodata, size 0x450 lma 0x800bbe8
Loading section .ARM, size 0x8 lma 0x800c038
Loading section .init_array, size 0x8 lma 0x800c040
Loading section .fini_array, size 0x8 lma 0x800c048
Loading section .data, size 0x9a8 lma 0x800c050
Start address 0x08006774, load size 51656
Transfer rate: 31 KB/sec, 5739 bytes/write.
Unable to match requested speed 500 kHz, using 480 kHz
Unable to match requested speed 500 kHz, using 480 kHz
A debugging session is active.
Inferior 1 [Remote target] will be detached.
Quit anyway? (y or n) [answered Y; input not from terminal]
[Inferior 1 (Remote target) detached]
HAL_Delay (Delay=100) at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c:410
410 wait += (uint32_t)uwTickFreq;
### Assembly ############################################################################################################################################################################################################################
0x08002be8 HAL_Delay+20 ldr r3, [r7, #12]
0x08002bea HAL_Delay+22 add r3, r2
0x08002bec HAL_Delay+24 str r3, [r7, #12]
0x08002bee HAL_Delay+26 nop
0x08002bf0 HAL_Delay+28 bl 0x8002bb0 <HAL_IncTick+28>
0x08002bf4 HAL_Delay+32 mov r2, r0
0x08002bf6 HAL_Delay+34 ldr r3, [r7, #8]
0x08002bf8 HAL_Delay+36 subs r3, r2, r3
0x08002bfa HAL_Delay+38 ldr r2, [r7, #12]
0x08002bfc HAL_Delay+40 cmp r2, r3
### Breakpoints #########################################################################################################################################################################################################################
### Expressions #########################################################################################################################################################################################################################
### History #############################################################################################################################################################################################################################
### Memory ##############################################################################################################################################################################################################################
### Registers ###########################################################################################################################################################################################################################
r0 0x00034038 r3 0x00034038 r6 0x00000000 r9 0x00000000 r12 0xffffffff pc 0x08002bf4 msp 0x2000ffd0 basepri 0x00
r1 0x00000040 r4 0x2000206c r7 0x2000ffd0 r10 0x00000000 sp 0x2000ffd0 xPSR 0x21000000 psp 0x00000000 faultmask 0x00
r2 0x00000065 r5 0x00000000 r8 0x00000000 r11 0x00000000 lr 0x08002bf5 fpscr 0x00000010 primask 0x00 control 0x04
### Source ##############################################################################################################################################################################################################################
400 * @retval None
401 */
402 __weak void HAL_Delay(uint32_t Delay)
403 {
404 uint32_t tickstart = HAL_GetTick();
405 uint32_t wait = Delay;
406
407 /* Add a period to guaranty minimum wait */
408 if (wait < HAL_MAX_DELAY)
409 {
410 wait += (uint32_t)uwTickFreq;
411 }
412
413 while ((HAL_GetTick() - tickstart) < wait)
414 {
415 }
416 }
417
418 /**
419 * @brief Suspend Tick increment.
### Stack ###############################################################################################################################################################################################################################
[0] from 0x08002bf4 in HAL_Delay+32 at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c:410
[1] from 0x0800670a in p_serial_mgr_init+54 at shared/drivers/p_serial_mgr.c:53
### Threads #############################################################################################################################################################################################################################
[1] id 0 from 0x08002bf4 in HAL_Delay+32 at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c:410
### Variables ###########################################################################################################################################################################################################################
arg Delay = 100
loc tickstart = 213011, wait = 101
#########################################################################################################################################################################################################################################
Loading section .isr_vector, size 0x190 lma 0x8000000
Loading section .text, size 0xba30 lma 0x80001c0
Loading section .rodata, size 0x458 lma 0x800bbf0
Loading section .ARM, size 0x8 lma 0x800c048
Loading section .init_array, size 0x8 lma 0x800c050
Loading section .fini_array, size 0x8 lma 0x800c058
Loading section .data, size 0x9a8 lma 0x800c060
Start address 0x08006780, load size 51672
Transfer rate: 31 KB/sec, 5741 bytes/write.
Unable to match requested speed 500 kHz, using 480 kHz
Unable to match requested speed 500 kHz, using 480 kHz
A debugging session is active.
Inferior 1 [Remote target] will be detached.
Quit anyway? (y or n) [answered Y; input not from terminal]
[Inferior 1 (Remote target) detached]
0x08002bc2 in HAL_GetTick () at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c:340
340 return uwTick;
### Assembly ############################################################################################################################################################################################################################
~
~
0x08002bbc HAL_GetTick+0 push {r7}
0x08002bbe HAL_GetTick+2 add r7, sp, #0
0x08002bc0 HAL_GetTick+4 ldr r3, [pc, #12] ; (0x8002bd0 <HAL_GetTick+20>)
0x08002bc2 HAL_GetTick+6 ldr r3, [r3, #0]
0x08002bc4 HAL_GetTick+8 mov r0, r3
0x08002bc6 HAL_GetTick+10 mov sp, r7
0x08002bc8 HAL_GetTick+12 ldr.w r7, [sp], #4
0x08002bcc HAL_GetTick+16 bx lr
### Breakpoints #########################################################################################################################################################################################################################
### Expressions #########################################################################################################################################################################################################################
### History #############################################################################################################################################################################################################################
### Memory ##############################################################################################################################################################################################################################
### Registers ###########################################################################################################################################################################################################################
r0 0x000041b6 r3 0x20000c18 r6 0x00000000 r9 0x00000000 r12 0xffffffff pc 0x08002bc2 msp 0x2000ffcc basepri 0x00
r1 0x00000040 r4 0x2000206c r7 0x2000ffcc r10 0x00000000 sp 0x2000ffcc xPSR 0x21000000 psp 0x00000000 faultmask 0x00
r2 0x00000065 r5 0x00000000 r8 0x00000000 r11 0x00000000 lr 0x08002c01 fpscr 0x00000010 primask 0x00 control 0x04
### Source ##############################################################################################################################################################################################################################
330 }
331
332 /**
333 * @brief Provide a tick value in millisecond.
334 * @note This function is declared as __weak to be overwritten in case of other
335 * implementations in user file.
336 * @retval tick value
337 */
338 __weak uint32_t HAL_GetTick(void)
339 {
340 return uwTick;
341 }
342
343 /**
344 * @brief This function returns a tick priority.
345 * @retval tick priority
346 */
347 uint32_t HAL_GetTickPrio(void)
348 {
349 return uwTickPrio;
### Stack ###############################################################################################################################################################################################################################
[0] from 0x08002bc2 in HAL_GetTick+6 at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c:340
[1] from 0x08002c00 in HAL_RCC_OscConfig+44 at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c:422
[2] from 0x00000000
### Threads #############################################################################################################################################################################################################################
[1] id 0 from 0x08002bc2 in HAL_GetTick+6 at Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c:340
### Variables ###########################################################################################################################################################################################################################
#########################################################################################################################################################################################################################################
Loading section .isr_vector, size 0x190 lma 0x8000000
Loading section .text, size 0xb9d0 lma 0x80001c0
Loading section .rodata, size 0x450 lma 0x800bb90
Loading section .ARM, size 0x8 lma 0x800bfe0
Loading section .init_array, size 0x8 lma 0x800bfe8
Loading section .fini_array, size 0x8 lma 0x800bff0
Loading section .data, size 0x9a8 lma 0x800bff8
Start address 0x08006720, load size 51568
Transfer rate: 31 KB/sec, 5729 bytes/write.
Unable to match requested speed 500 kHz, using 480 kHz
Unable to match requested speed 500 kHz, using 480 kHz
A debugging session is active.
Inferior 1 [Remote target] will be detached.
Quit anyway? (y or n) [answered Y; input not from terminal]
[Inferior 1 (Remote target) detached]
0x080011f2 in main () at Core/Src/main.c:141
141 p_serial_mgr_service();
### Assembly ############################################################################################################################################################################################################################
0x080011e2 main+122 bl 0x8001af8 <HAL_TIM_Base_Start_IT>
0x080011e6 main+126 bl 0x80066d4 <p_serial_mgr_start>
0x080011ea main+130 movs r3, #0
0x080011ec main+132 strh r3, [r7, #6]
0x080011ee main+134 bl 0x80066c4 <p_serial_mgr_service>
0x080011f2 main+138 b.n 0x80011ee <main+134>
0x080011f4 main+140 lsrs r0, r2, #12
0x080011f6 main+142 movs r0, #0
0x080011f8 main+144 asrs r1, r1, #22
0x080011fa main+146 lsrs r0, r0, #32
### Breakpoints #########################################################################################################################################################################################################################
### Expressions #########################################################################################################################################################################################################################
### History #############################################################################################################################################################################################################################
### Memory ##############################################################################################################################################################################################################################
### Registers ###########################################################################################################################################################################################################################
r0 0x00000000 r3 0x00000000 r6 0x00000000 r9 0x00000000 r12 0xffffffff pc 0x080011f2 msp 0x2000fff0 basepri 0x00
r1 0x40013808 r4 0x2000206c r7 0x2000fff0 r10 0x00000000 sp 0x2000fff0 xPSR 0x41030000 psp 0x00000000 faultmask 0x00
r2 0x00004041 r5 0x00000000 r8 0x00000000 r11 0x00000000 lr 0x080011f3 fpscr 0x00000010 primask 0x00 control 0x04
### Source ##############################################################################################################################################################################################################################
131
132 p_serial_mgr_start();
133
134 uint16_t motor_degrees = 0;
135 /* USER CODE END 2 */
136
137 /* Infinite loop */
138 /* USER CODE BEGIN WHILE */
139 while (1)
140 {
141 p_serial_mgr_service();
142 // if (b_timer_struck)
143 // {
144 // // PDEBUG("%d\n", sys_time);
145 // b_timer_struck = false;
146 // motor_degrees = (motor_degrees + 1) % 360;
147 // mc_service(motor_degrees, 50);
148 // }
149 // serial_pkt_t *pkt = NULL;
150 // if ((pkt = p_serial_mgr_service()) != NULL)
### Stack ###############################################################################################################################################################################################################################
[0] from 0x080011f2 in main+138 at Core/Src/main.c:141
### Threads #############################################################################################################################################################################################################################
[1] id 0 from 0x080011f2 in main+138 at Core/Src/main.c:141
### Variables ###########################################################################################################################################################################################################################
loc motor_degrees = 0
#########################################################################################################################################################################################################################################
Loading section .isr_vector, size 0x190 lma 0x8000000
Loading section .text, size 0xb9d0 lma 0x80001c0
Loading section .rodata, size 0x450 lma 0x800bb90
Loading section .ARM, size 0x8 lma 0x800bfe0
Loading section .init_array, size 0x8 lma 0x800bfe8
Loading section .fini_array, size 0x8 lma 0x800bff0
Loading section .data, size 0x9a8 lma 0x800bff8
Start address 0x08006720, load size 51568
Transfer rate: 31 KB/sec, 5729 bytes/write.
Unable to match requested speed 500 kHz, using 480 kHz
Unable to match requested speed 500 kHz, using 480 kHz
A debugging session is active.
Inferior 1 [Remote target] will be detached.
Quit anyway? (y or n) [answered Y; input not from terminal]
[Inferior 1 (Remote target) detached]
0x080011f2 in main () at Core/Src/main.c:141
141 p_serial_mgr_service();
### Assembly ############################################################################################################################################################################################################################
0x080011e2 main+122 bl 0x8001af8 <HAL_TIM_Base_Start_IT+8>
0x080011e6 main+126 bl 0x80066d4 <p_serial_mgr_start+8>
0x080011ea main+130 movs r3, #0
0x080011ec main+132 strh r3, [r7, #6]
0x080011ee main+134 bl 0x80066c4 <p_serial_mgr_service+8>
0x080011f2 main+138 b.n 0x80011ee <main+134>
0x080011f4 main+140 lsrs r0, r2, #12
0x080011f6 main+142 movs r0, #0
0x080011f8 main+144 asrs r1, r1, #22
0x080011fa main+146 lsrs r0, r0, #32
### Breakpoints #########################################################################################################################################################################################################################
### Expressions #########################################################################################################################################################################################################################
### History #############################################################################################################################################################################################################################
### Memory ##############################################################################################################################################################################################################################
### Registers ###########################################################################################################################################################################################################################
r0 0x00000000 r3 0x00000000 r6 0x00000000 r9 0x00000000 r12 0xffffffff pc 0x080011f2 msp 0x2000fff0 basepri 0x00
r1 0x40013808 r4 0x2000206c r7 0x2000fff0 r10 0x00000000 sp 0x2000fff0 xPSR 0x41030000 psp 0x00000000 faultmask 0x00
r2 0x00004041 r5 0x00000000 r8 0x00000000 r11 0x00000000 lr 0x080011f3 fpscr 0x00000010 primask 0x00 control 0x04
### Source ##############################################################################################################################################################################################################################
131
132 p_serial_mgr_start();
133
134 uint16_t motor_degrees = 0;
135 /* USER CODE END 2 */
136
137 /* Infinite loop */
138 /* USER CODE BEGIN WHILE */
139 while (1)
140 {
141 p_serial_mgr_service();
142 // if (b_timer_struck)
143 // {
144 // // PDEBUG("%d\n", sys_time);
145 // b_timer_struck = false;
146 // motor_degrees = (motor_degrees + 1) % 360;
147 // mc_service(motor_degrees, 50);
148 // }
149 // serial_pkt_t *pkt = NULL;
150 // if ((pkt = p_serial_mgr_service()) != NULL)
### Stack ###############################################################################################################################################################################################################################
[0] from 0x080011f2 in main+138 at Core/Src/main.c:141
### Threads #############################################################################################################################################################################################################################
[1] id 0 from 0x080011f2 in main+138 at Core/Src/main.c:141
### Variables ###########################################################################################################################################################################################################################
loc motor_degrees = 0
#########################################################################################################################################################################################################################################
Loading section .isr_vector, size 0x190 lma 0x8000000
Loading section .text, size 0xb9c8 lma 0x80001c0
Loading section .rodata, size 0x450 lma 0x800bb88
Loading section .ARM, size 0x8 lma 0x800bfd8
Loading section .init_array, size 0x8 lma 0x800bfe0
Loading section .fini_array, size 0x8 lma 0x800bfe8
Loading section .data, size 0x9a8 lma 0x800bff0
Start address 0x08006718, load size 51560
Transfer rate: 31 KB/sec, 5728 bytes/write.
Unable to match requested speed 500 kHz, using 480 kHz
Unable to match requested speed 500 kHz, using 480 kHz
A debugging session is active.
Inferior 1 [Remote target] will be detached.
Quit anyway? (y or n) [answered Y; input not from terminal]
[Inferior 1 (Remote target) detached]

@ -4,13 +4,14 @@ Dma.RequestsNb=1
Dma.USART1_RX.0.Direction=DMA_PERIPH_TO_MEMORY
Dma.USART1_RX.0.Instance=DMA1_Channel5
Dma.USART1_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.USART1_RX.0.MemInc=DMA_MINC_ENABLE
Dma.USART1_RX.0.MemInc=DMA_MINC_DISABLE
Dma.USART1_RX.0.Mode=DMA_NORMAL
Dma.USART1_RX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.USART1_RX.0.PeriphInc=DMA_PINC_DISABLE
Dma.USART1_RX.0.Priority=DMA_PRIORITY_LOW
Dma.USART1_RX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
File.Version=6
GPIO.groupedBy=Group By Peripherals
KeepUserPlacement=false
Mcu.CPN=STM32L432KCU3
Mcu.Family=STM32L4
@ -20,9 +21,10 @@ Mcu.IP2=RCC
Mcu.IP3=SYS
Mcu.IP4=TIM2
Mcu.IP5=TIM6
Mcu.IP6=USART1
Mcu.IP7=USART2
Mcu.IPNb=8
Mcu.IP6=TIM7
Mcu.IP7=USART1
Mcu.IP8=USART2
Mcu.IPNb=9
Mcu.Name=STM32L432K(B-C)Ux
Mcu.Package=UFQFPN32
Mcu.Pin0=PC14-OSC32_IN (PC14)
@ -33,6 +35,7 @@ Mcu.Pin12=PA14 (JTCK-SWCLK)
Mcu.Pin13=PA15 (JTDI)
Mcu.Pin14=VP_SYS_VS_Systick
Mcu.Pin15=VP_TIM6_VS_ClockSourceINT
Mcu.Pin16=VP_TIM7_VS_ClockSourceINT
Mcu.Pin2=PA0
Mcu.Pin3=PA1
Mcu.Pin4=PA2
@ -41,7 +44,7 @@ Mcu.Pin6=PA4
Mcu.Pin7=PA5
Mcu.Pin8=PA9
Mcu.Pin9=PA10
Mcu.PinsNb=16
Mcu.PinsNb=17
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32L432KCUx
@ -59,6 +62,7 @@ NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
NVIC.SysTick_IRQn=true\:0\:0\:true\:false\:true\:true\:true\:true
NVIC.TIM6_DAC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.TIM7_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.USART2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
@ -144,57 +148,57 @@ ProjectManager.ToolChainLocation=
ProjectManager.UnderRoot=false
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_TIM2_Init-TIM2-false-HAL-true,4-MX_USART2_UART_Init-USART2-false-HAL-true,5-MX_DMA_Init-DMA-false-HAL-true,6-MX_USART1_UART_Init-USART1-false-HAL-true,7-MX_TIM6_Init-TIM6-false-HAL-true
RCC.48CLKFreq_Value=24000000
RCC.AHBFreq_Value=32000000
RCC.APB1Freq_Value=32000000
RCC.APB1TimFreq_Value=32000000
RCC.APB2Freq_Value=32000000
RCC.APB2TimFreq_Value=32000000
RCC.CortexFreq_Value=32000000
RCC.FCLKCortexFreq_Value=32000000
RCC.AHBFreq_Value=72000000
RCC.APB1Freq_Value=72000000
RCC.APB1TimFreq_Value=72000000
RCC.APB2Freq_Value=72000000
RCC.APB2TimFreq_Value=72000000
RCC.CortexFreq_Value=72000000
RCC.FCLKCortexFreq_Value=72000000
RCC.FamilyName=M
RCC.HCLKFreq_Value=32000000
RCC.HCLKFreq_Value=72000000
RCC.HSE_VALUE=8000000
RCC.HSI16_VALUE=16000000
RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=32000000
RCC.I2C1Freq_Value=72000000
RCC.I2C2Freq_Value=16000000
RCC.I2C3Freq_Value=32000000
RCC.I2C3Freq_Value=72000000
RCC.IPParameters=48CLKFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI16_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIMFreq_Value,LPUART1Freq_Value,LPUARTFreq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,MCOPinFreq_Value,MSI_VALUE,PLLCLKFreq_Value,PLLMUL,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RTCFreq_Value,RTCHSEDivFreq_Value,SAI1Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,TIMFreq_Value,TimerFreq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value,WatchDogFreq_Value
RCC.LCDFreq_Value=37000
RCC.LPTIM1Freq_Value=32000000
RCC.LPTIM2Freq_Value=32000000
RCC.LPTIM1Freq_Value=72000000
RCC.LPTIM2Freq_Value=72000000
RCC.LPTIMFreq_Value=32000000
RCC.LPUART1Freq_Value=32000000
RCC.LPUART1Freq_Value=72000000
RCC.LPUARTFreq_Value=32000000
RCC.LSCOPinFreq_Value=32000
RCC.LSI_VALUE=32000
RCC.MCO1PinFreq_Value=32000000
RCC.MCO1PinFreq_Value=72000000
RCC.MCOPinFreq_Value=32000000
RCC.MSI_VALUE=4000000
RCC.PLLCLKFreq_Value=32000000
RCC.PLLMUL=RCC_PLLMUL_4
RCC.PLLN=16
RCC.PLLPoutputFreq_Value=9142857.142857144
RCC.PLLQoutputFreq_Value=32000000
RCC.PLLRCLKFreq_Value=32000000
RCC.PLLN=36
RCC.PLLPoutputFreq_Value=20571428.57142857
RCC.PLLQoutputFreq_Value=72000000
RCC.PLLRCLKFreq_Value=72000000
RCC.PLLSAI1PoutputFreq_Value=4571428.571428572
RCC.PLLSAI1QoutputFreq_Value=16000000
RCC.PLLSAI1RoutputFreq_Value=16000000
RCC.PWRFreq_Value=32000000
RCC.PWRFreq_Value=72000000
RCC.RTCFreq_Value=32000
RCC.RTCHSEDivFreq_Value=4000000
RCC.SAI1Freq_Value=4571428.571428572
RCC.SWPMI1Freq_Value=32000000
RCC.SYSCLKFreq_VALUE=32000000
RCC.SWPMI1Freq_Value=72000000
RCC.SYSCLKFreq_VALUE=72000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.TIMFreq_Value=32000000
RCC.TimerFreq_Value=32000000
RCC.USART1Freq_Value=32000000
RCC.USART2Freq_Value=32000000
RCC.USART1Freq_Value=72000000
RCC.USART2Freq_Value=72000000
RCC.USART3Freq_Value=16000000
RCC.VCOInputFreq_Value=4000000
RCC.VCOOutputFreq_Value=64000000
RCC.VCOOutputFreq_Value=144000000
RCC.VCOSAI1OutputFreq_Value=32000000
RCC.WatchDogFreq_Value=32000
SH.S_TIM2_CH2.0=TIM2_CH2,PWM Generation2 CH2
@ -210,9 +214,12 @@ TIM2.Prescaler=127
TIM2.Pulse-PWM\ Generation2\ CH2=250
TIM2.Pulse-PWM\ Generation4\ CH4=125
TIM6.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
TIM6.IPParameters=Prescaler,AutoReloadPreload,Period
TIM6.Period=249
TIM6.Prescaler=127
TIM6.IPParameters=Prescaler,Period,AutoReloadPreload
TIM6.Period=72
TIM6.Prescaler=1000
TIM7.IPParameters=Prescaler,Period
TIM7.Period=72
TIM7.Prescaler=1000
USART1.IPParameters=VirtualMode-Asynchronous,VirtualMode-Hardware Flow Control (RS485)
USART1.VirtualMode-Asynchronous=VM_ASYNC
USART1.VirtualMode-Hardware\ Flow\ Control\ (RS485)=VM_ASYNC
@ -222,5 +229,7 @@ VP_SYS_VS_Systick.Mode=SysTick
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
VP_TIM6_VS_ClockSourceINT.Mode=Enable_Timer
VP_TIM6_VS_ClockSourceINT.Signal=TIM6_VS_ClockSourceINT
VP_TIM7_VS_ClockSourceINT.Mode=Enable_Timer
VP_TIM7_VS_ClockSourceINT.Signal=TIM7_VS_ClockSourceINT
board=NUCLEO-L432KC
boardIOC=true

@ -1,11 +1,12 @@
#include "p_serial_mgr.h"
#include "putil.h"
#include "stm32l4xx_hal_def.h"
#include "stm32l4xx_hal_dma.h"
#include "stm32l4xx_hal_uart.h"
#define NUM_BUFFERS (10)
uint8_t sbuffer[NUM_BUFFERS][MAX_MESSAGE_LEN];
#define MAX_DMA_BUFFER_LEN (512)
uint8_t sbuffer[NUM_BUFFERS][MAX_DMA_BUFFER_LEN];
uint8_t active_buffer = 0;
uint8_t rxb[MAX_MESSAGE_LEN];
@ -28,6 +29,7 @@ typedef enum serial_state_t
} serial_state_t;
static UART_HandleTypeDef *_serial_huart_inst = NULL;
static DMA_HandleTypeDef *_serial_dma_inst = NULL;
static uint8_t rxc = '\0';
static serial_state_t sstate = SS_IDLE;
@ -38,50 +40,24 @@ static void p_serial_mgr_flush()
}
void UART1_RxCpltCallback(UART_HandleTypeDef *huart)
{
PDEBUG("%c", sbuffer[active_buffer][0]);
PDEBUG("%s\n", sbuffer[active_buffer]);
active_buffer = (active_buffer + 1) % NUM_BUFFERS;
p_serial_mgr_start();
return;
if (sstate == SS_IDLE && sbuffer[active_buffer][0] == 0x7E)
{
sstate = SS_START;
}
else
{
sstate = SS_ERR;
}
}
void p_serial_mgr_init(UART_HandleTypeDef *huart)
void p_serial_mgr_init(UART_HandleTypeDef *huart, DMA_HandleTypeDef *hdma)
{
_serial_huart_inst = huart;
_serial_dma_inst = hdma;
_serial_huart_inst->RxCpltCallback = UART1_RxCpltCallback;
}
void p_serial_mgr_service(void)
{
if (sstate == SS_START)
{
while (HAL_UART_Receive(_serial_huart_inst, &sbuffer[active_buffer][1], MAX_MESSAGE_LEN - 2, 20) != HAL_OK) {}
for (int ind = 0; ind < 24; ind++)
{
PDEBUG("[%d]: 0x%02x\n", ind, sbuffer[active_buffer][ind]);
}
PDEBUG("\n\n");
memset(sbuffer[active_buffer], 0, MAX_MESSAGE_LEN);
active_buffer = (active_buffer + 1) % NUM_BUFFERS;
uint8_t sendbuffer[9] = {0x7E, DEVICE_ADDR, MASTER_ADDR, 4, 0x01, 0x02, 0x03, 0x04, 0xFF};
// HAL_UART_Transmit(_serial_huart_inst, sendbuffer, 9, 10);
p_serial_mgr_start();
}
else if (sstate == SS_ERR)
{
PDEBUG("MISSED BYTE 0x%02x\n", sbuffer[active_buffer][0]);
p_serial_mgr_start();
}
// HAL_Delay(100);
// PDEBUG("%d\n", __HAL_DMA_GET_COUNTER(_serial_dma_inst));
}
void p_serial_mgr_start()
{
sstate = SS_IDLE;
volatile HAL_StatusTypeDef ret = HAL_UART_Receive_IT(_serial_huart_inst, &sbuffer[active_buffer][0], 1);
asm volatile("nop");
HAL_UART_Receive_DMA(_serial_huart_inst, sbuffer[active_buffer], MAX_DMA_BUFFER_LEN);
}

@ -28,7 +28,7 @@ typedef struct serial_pkt_t
int msg_len;
} serial_pkt_t;
void p_serial_mgr_init(UART_HandleTypeDef *huart);
void p_serial_mgr_init(UART_HandleTypeDef *huart, DMA_HandleTypeDef *hdma);
void p_serial_mgr_service(void);

Loading…
Cancel
Save