#c #embedded #atmelstudio
#c #embedded #atmelstudio
Вопрос:
Я начинающий с UART и пытаюсь написать код, который тестирует UART0 на SAME70, этот код предполагает, что нужно написать символ, а затем прочитать его. Я искал пример, который помог бы мне понять, как я могу написать простой код для отправки и получения через UART, но я не смог его найти, если кто-нибудь мне поможет, я буду благодарен.
Конфигурация настройки UART.
/* Define which UART */ #define UART_VERSION UART2 /* Configure console UART. */ sysclk_enable_peripheral_clock(UART_ID); stdio_serial_init(UART_VERSION, amp;uart_serial_options); /* Custom Configuration for UART */ void uart_custom_config(void) { pio_configure(PINS_UART_PIO, PINS_UART_TYPE, PINS_UART_MASK, PINS_UART_ATTR); pmc_enable_periph_clk(UART_ID); const sam_uart_opt_t uart_settings = {sysclk_get_cpu_hz() / 2, CONF_UART_BAUDRATE, UART_MR_PAR_NO}; uart_init(UART_VERSION, amp;uart_settings); uart_enable_interrupt(UART_VERSION, UART_IER_RXRDY); NVIC_EnableIRQ(UART2_IRQn); }
функция отправки для UART.
void sendViaUart(uint8_t data) { while(!(UART_VERSION-gt;UART_SR amp; UART_SR_TXRDY)); uart_write(UART_VERSION, data); }
Обработчик UART
/* UART2 Handler */ void UART2_Handler() { uint32_t dw_status = uart_get_status(UART_VERSION); if(dw_status amp; UART_SR_RXRDY) { uint8_t received_byte; uart_read(UART_VERSION, amp;received_byte); sendViaUart(received_byte); } }
и вот главный код.
int main(void) { uart_custom_config(); configure_console(); if(SysTick_Config(sysclk_get_cpu_hz() / 1000)) { puts("-F- Systick configuration errorr"); while(1); } char buffer = 'A'; while(1) { UART2_Handler(); sendViaUart(buffer); } }