Skip to content
Snippets Groups Projects
Commit 88419898 authored by Václav Jelínek's avatar Václav Jelínek
Browse files

Move usart irq handlers to the original files

parent 565d2e83
No related branches found
No related tags found
No related merge requests found
Pipeline #77352 passed
......@@ -51,6 +51,7 @@ void HardFault_Handler(void);
void SVC_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
void USART1_IRQHandler(void);
void TIM1_BRK_UP_TRG_COM_IRQHandler(void);
/* USER CODE BEGIN EFP */
......
......@@ -105,7 +105,49 @@ static void MX_USART1_UART_Init(void);
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
void USART1_Rec_Cal() {
rx_buff[rx_i] = LL_USART_ReceiveData8(USART1);
uint8_t msg_type = type_of_message(rx_buff[0]);
uint8_t msg_subtype = subtype_of_message(rx_buff[0]);
uint8_t msg_full_len = full_length_of_message(rx_buff[0]);
if (msg_full_len > EV3_MSG_BUFFER_SIZE) {
rx_i = 0;
return;
}
switch (msg_type) {
case MTYPE_SYSTEM:
if (msg_subtype == MTYPE_SYSTEM_ACK
&& (sensor_state == S_MODE_WAIT_ACK || sensor_state == S_MODE_INIT)) {
sensor_state = S_MODE_NORMAL;
} else if (msg_subtype == MTYPE_SYSTEM_NACK && sensor_state > S_MODE_INIT) {
nack_time = HAL_GetTick();
//send_data(sensor_state, &laser_sensor.Distance, sizeof(laser_sensor.Distance));
}
break;
case MTYPE_COMMAND:
if (msg_full_len == rx_i+1 && sensor_state > S_MODE_INIT) {
uint8_t csum = calculate_message_checksum(rx_buff, rx_i);
if (csum == rx_buff[rx_i]) {
if(msg_subtype == MTYPE_COMMAND_SELECT) {
if (rx_buff[1] != sensor_state
&& rx_buff[1] > S_MODE_INIT
&& rx_buff[1] < S_MODE_COUNT) {
sensor_state = rx_buff[1];
change_sensor_settings(&laser_sensor, sensor_state);
}
} else if (msg_subtype == MTYPE_COMMAND_WRITE) {
memcpy(&laser_sensor.compVAL, &rx_buff[1], 2);
}
}
rx_i = 0;
} else {
rx_i++;
}
break;
default:
rx_i = 0;
}
}
/* USER CODE END 0 */
......@@ -489,51 +531,6 @@ static void MX_GPIO_Init(void)
}
/* USER CODE BEGIN 4 */
void USART1_IRQHandler(void){
if(LL_USART_IsActiveFlag_RXNE(USART1)){
rx_buff[rx_i] = LL_USART_ReceiveData8(USART1);
uint8_t msg_type = type_of_message(rx_buff[0]);
uint8_t msg_subtype = subtype_of_message(rx_buff[0]);
uint8_t msg_full_len = full_length_of_message(rx_buff[0]);
if (msg_full_len > EV3_MSG_BUFFER_SIZE) {
rx_i = 0;
return;
}
switch (msg_type) {
case MTYPE_SYSTEM:
if (msg_subtype == MTYPE_SYSTEM_ACK
&& (sensor_state == S_MODE_WAIT_ACK || sensor_state == S_MODE_INIT)) {
sensor_state = S_MODE_NORMAL;
} else if (msg_subtype == MTYPE_SYSTEM_NACK && sensor_state > S_MODE_INIT) {
nack_time = HAL_GetTick();
//send_data(sensor_state, &laser_sensor.Distance, sizeof(laser_sensor.Distance));
}
break;
case MTYPE_COMMAND:
if (msg_full_len == rx_i+1 && sensor_state > S_MODE_INIT) {
uint8_t csum = calculate_message_checksum(rx_buff, rx_i);
if (csum == rx_buff[rx_i]) {
if(msg_subtype == MTYPE_COMMAND_SELECT) {
if (rx_buff[1] != sensor_state
&& rx_buff[1] > S_MODE_INIT
&& rx_buff[1] < S_MODE_COUNT) {
sensor_state = rx_buff[1];
change_sensor_settings(&laser_sensor, sensor_state);
}
} else if (msg_subtype == MTYPE_COMMAND_WRITE) {
memcpy(&laser_sensor.compVAL, &rx_buff[1], 2);
}
}
rx_i = 0;
} else {
rx_i++;
}
break;
default:
rx_i = 0;
}
}
}
/* USER CODE END 4 */
/**
......
......@@ -41,7 +41,6 @@
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
extern volatile int IntCount;
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
......@@ -139,7 +138,22 @@ void SysTick_Handler(void)
/* For the available peripheral interrupt handler names, */
/* please refer to the startup file (startup_stm32g0xx.s). */
/******************************************************************************/
/**
* @brief This function handles USART1 global interrupt / USART1 wake-up interrupt through EXTI line 25.
*/
void USART1_IRQHandler(void)
{
/* USER CODE BEGIN USART1_IRQn 0 */
if(LL_USART_IsActiveFlag_RXNE(USART1)){
USART1_Rec_Cal();
USART1->RQR |= USART_RQR_RXFRQ;
}
/* USER CODE END USART1_IRQn 0 */
/* USER CODE BEGIN USART1_IRQn 1 */
/* USER CODE END USART1_IRQn 1 */
}
/**
* @brief This function handles TIM1 break, update, trigger and commutation interrupts.
*/
......
......@@ -41,15 +41,11 @@
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
extern uint8_t ranging[5];
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
/* USER CODE BEGIN PFP */
extern void USART1_Rec_Cal(void);
extern void USART2_Rec_Cal(void);
extern void uart2_send(uint8_t *sData);
extern void start_meas(void);
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
......
......@@ -52,6 +52,7 @@ void HardFault_Handler(void);
void SVC_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
void USART1_IRQHandler(void);
/* USER CODE BEGIN EFP */
/* USER CODE END EFP */
......
......@@ -184,8 +184,21 @@ static void MX_ADC1_Init(void);
static void MX_USART1_UART_Init(void);
static void MX_TIM1_Init(void);
/* USER CODE BEGIN PFP */
void USART1_IRQHandler(void);
void delay_us(uint16_t us);
uint16_t meas_light(void);
void red_on(void);
void red_off(void);
void green_on(void);
void green_off(void);
void blue_on(void);
void blue_off(void);
float max(float a, float b, float c);
float min(float a, float b, float c);
void rgb_to_hsv(float r, float g, float b, float* h, float* s, float* v);
uint8_t hsv_to_color(float h, float s, float v);
float MAP(uint16_t au16_IN, uint16_t au16_INmin, uint16_t au16_INmax, uint16_t au16_OUTmin, uint16_t au16_OUTmax);
void measure_data(uint8_t sensor_state);
void choose_send_data(uint8_t sensor_state);
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
......@@ -200,6 +213,50 @@ uint16_t meas_light(void){
HAL_ADC_PollForConversion(&hadc1,1000);
return (uint16_t)HAL_ADC_GetValue(&hadc1);
}
void USART1_Rec_Cal() {
rx_buff[rx_i] = LL_USART_ReceiveData8(USART1);
uint8_t msg_type = type_of_message(rx_buff[0]);
uint8_t msg_subtype = subtype_of_message(rx_buff[0]);
uint8_t msg_full_len = full_length_of_message(rx_buff[0]);
if (msg_full_len > EV3_MSG_BUFFER_SIZE) {
rx_i = 0;
return;
}
switch (msg_type) {
case MTYPE_SYSTEM:
if (msg_subtype == MTYPE_SYSTEM_ACK
&& (sensor_state == S_MODE_WAIT_ACK || sensor_state == S_MODE_INIT)) {
sensor_state = S_MODE_REFLECT;
} else if (msg_subtype == MTYPE_SYSTEM_NACK && sensor_state > S_MODE_INIT) {
nack_time = HAL_GetTick();
//choose_send_data(sensor_state);
}
break;
case MTYPE_COMMAND:
if (msg_full_len == rx_i+1 && sensor_state > S_MODE_INIT) {
uint8_t csum = calculate_message_checksum(rx_buff, rx_i);
if (csum == rx_buff[rx_i]) {
if(msg_subtype == MTYPE_COMMAND_SELECT) {
if (rx_buff[1] != sensor_state
&& rx_buff[1] > S_MODE_INIT
&& rx_buff[1] < S_MODE_COUNT) {
sensor_state = rx_buff[1];
//change_sensor_settings(&laser_sensor, sensor_state);
}
} else if (msg_subtype == MTYPE_COMMAND_WRITE) {
}
}
rx_i = 0;
} else {
rx_i++;
}
break;
default:
rx_i = 0;
}
}
// all outputs are set as OPEN-COLECTOR
// outputs are directly in parallel, use command to change the status at the same time
// => use GPIOx_BSRR register...
......@@ -842,51 +899,6 @@ static void MX_GPIO_Init(void)
}
/* USER CODE BEGIN 4 */
void USART1_IRQHandler(void){
if(LL_USART_IsActiveFlag_RXNE(USART1)){
rx_buff[rx_i] = LL_USART_ReceiveData8(USART1);
uint8_t msg_type = type_of_message(rx_buff[0]);
uint8_t msg_subtype = subtype_of_message(rx_buff[0]);
uint8_t msg_full_len = full_length_of_message(rx_buff[0]);
if (msg_full_len > EV3_MSG_BUFFER_SIZE) {
rx_i = 0;
return;
}
switch (msg_type) {
case MTYPE_SYSTEM:
if (msg_subtype == MTYPE_SYSTEM_ACK
&& (sensor_state == S_MODE_WAIT_ACK || sensor_state == S_MODE_INIT)) {
sensor_state = S_MODE_REFLECT;
} else if (msg_subtype == MTYPE_SYSTEM_NACK && sensor_state > S_MODE_INIT) {
nack_time = HAL_GetTick();
//choose_send_data(sensor_state);
}
break;
case MTYPE_COMMAND:
if (msg_full_len == rx_i+1 && sensor_state > S_MODE_INIT) {
uint8_t csum = calculate_message_checksum(rx_buff, rx_i);
if (csum == rx_buff[rx_i]) {
if(msg_subtype == MTYPE_COMMAND_SELECT) {
if (rx_buff[1] != sensor_state
&& rx_buff[1] > S_MODE_INIT
&& rx_buff[1] < S_MODE_COUNT) {
sensor_state = rx_buff[1];
//change_sensor_settings(&laser_sensor, sensor_state);
}
} else if (msg_subtype == MTYPE_COMMAND_WRITE) {
}
}
rx_i = 0;
} else {
rx_i++;
}
break;
default:
rx_i = 0;
}
}
}
/* USER CODE END 4 */
/**
......
......@@ -47,7 +47,7 @@
/* Private function prototypes -----------------------------------------------*/
/* USER CODE BEGIN PFP */
extern void USART1_Rec_Cal(void);
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
......@@ -134,6 +134,22 @@ void SysTick_Handler(void)
/* USER CODE END SysTick_IRQn 1 */
}
/**
* @brief This function handles USART1 global interrupt / USART1 wake-up interrupt through EXTI line 25.
*/
void USART1_IRQHandler(void)
{
/* USER CODE BEGIN USART1_IRQn 0 */
if(LL_USART_IsActiveFlag_RXNE(USART1)){
USART1_Rec_Cal();
USART1->RQR |= USART_RQR_RXFRQ;
}
/* USER CODE END USART1_IRQn 0 */
/* USER CODE BEGIN USART1_IRQn 1 */
/* USER CODE END USART1_IRQn 1 */
}
/* USER CODE BEGIN 1 */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment