01-19-2018, 09:47 AM
Skinuo i ja V9.0 Attolic. Samo pokrenuo da vidim da li radi...
U vezi STM32, imaju bagova svakako, ali kada se čovek navikne na HAL zaista extremno ubrzava osnovni setup. Do sada u proteklih 10 godina nisam naišao na bolju "alatku" od CubeMX-a.
Kao što smo već više puta zaključili HAL je zaista spor, ali za dosta primena može da se koristi. Uz dovoljno vremena čovek nauči od čega u njemu da se sklanja, a u čemu može da iskoristi HAL funkcije. Moj predlog je da se najviše klonite oko HAL-a u interrapt rutinama.
Da li je neko probao da uradi uvoz Keil projekta (koriste se HAL biblioteke) u Attolic?
@gorankg
Samo još da dopunim, ako u interrapu imaš kod koji HAL uporno generiše, upravo primeniš tvoj predlog :
U vezi STM32, imaju bagova svakako, ali kada se čovek navikne na HAL zaista extremno ubrzava osnovni setup. Do sada u proteklih 10 godina nisam naišao na bolju "alatku" od CubeMX-a.
Kao što smo već više puta zaključili HAL je zaista spor, ali za dosta primena može da se koristi. Uz dovoljno vremena čovek nauči od čega u njemu da se sklanja, a u čemu može da iskoristi HAL funkcije. Moj predlog je da se najviše klonite oko HAL-a u interrapt rutinama.
Da li je neko probao da uradi uvoz Keil projekta (koriste se HAL biblioteke) u Attolic?
@gorankg
Samo još da dopunim, ako u interrapu imaš kod koji HAL uporno generiše, upravo primeniš tvoj predlog :
Code:
/**
* @brief This function handles USART2 global interrupt / USART2 wake-up interrupt through EXTI line 26.
*/
void USART2_IRQHandler(void)
{
/* USER CODE BEGIN USART2_IRQn 0 */
unsigned char data;
/* UART in mode Receiver ---------------------------------------------------*/
if((USART2->ISR & UART_FLAG_RXNE) != RESET)
{
data = (uint8_t)(USART2->RDR); /* Receive data, clear flag */
Uart2RxBuffer[rx_wr_index2] = data;
if (++rx_wr_index2 == UART2_RXBUFFERSIZE) rx_wr_index2 = 0;
if (++rx_counter2 == UART2_RXBUFFERSIZE)
{
rx_counter2 = 0;
rx_rd_index2 = rx_wr_index2;
}
}
else
{
//error = ERROR_USART_RECEIVE; /* Report an error */
// NVIC_DisableIRQ(LPUART1_IRQn); /* Disable USART1_IRQn */
}
return;
/* USER CODE END USART2_IRQn 0 */
HAL_UART_IRQHandler(&huart2);
/* USER CODE BEGIN USART2_IRQn 1 */
/* USER CODE END USART2_IRQn 1 */
}