98 else if(instance ==
USART2) {
102 else if(instance ==
USART6) {
146 const char usart[] =
"USART";
148 uint8_t pos_counter = 0;
150 while(pos_counter != usart_len) {
151 name[pos_counter] = usart[pos_counter];
155 if(instance ==
USART1) name[pos_counter] =
'1';
156 else if(instance ==
USART2) name[pos_counter] =
'2';
157 else if(instance ==
USART6) name[pos_counter] =
'6';
160 name[pos_counter] =
'\0';
187 else if(instance ==
USART2) {
190 else if(instance ==
USART6) {
211 uint32_t usart_pclk = 0;
212 uint32_t temp_reg = 0;
213 uint32_t usartdiv = 0;
214 uint32_t usartdiv_mantissa;
215 uint32_t usartdiv_fraction;
225 usartdiv = ((25 * usart_pclk) / (2 * usart_cfg->
baud_rate));
228 usartdiv = ((25 * usart_pclk) / (4 * usart_cfg->
baud_rate));
231 usartdiv_mantissa = usartdiv / 100;
232 temp_reg |= usartdiv_mantissa << 4;
234 usartdiv_fraction = (usartdiv - (usartdiv_mantissa * 100));
238 usartdiv_fraction = (((usartdiv_fraction * 8) + 50) / 100) & ((uint8_t)0x07);
242 usartdiv_fraction = (((usartdiv_fraction * 16) + 50) / 100) & ((uint8_t)0x0F);
245 temp_reg |= usartdiv_fraction;
261 uint8_t data =
USART1->USART_DR;
281 uint8_t data =
USART6->USART_DR;
Arm Cortex-M4 NVIC driver public API.
Common utility module public API.
uint32_t get_str_len(char const *str)
Returns the length of a string, excluding the null terminator.
EN_STATUS_te
Represents an enabled or disabled state.
void nvic_set_interrupt(IRQn_te interrupt_line, EN_STATUS_te en_status)
Enables or disables an interrupt line in the NVIC.
void rcc_set_pclk_apb2(RCC_APB2ENR_te periph_position, EN_STATUS_te en_status)
Enables or disables the peripheral clock for an APB2 peripheral.
void rcc_reset_periph_apb2(RCC_APB2RSTR_te periph_position)
Resets an APB2 peripheral via RCC_APB2RSTR.
uint32_t rcc_get_apb2_clk(void)
Returns the current APB2 (high-speed) peripheral bus clock frequency in Hz.
void rcc_set_pclk_apb1(RCC_APB1ENR_te periph_position, EN_STATUS_te en_status)
Enables or disables the peripheral clock for an APB1 peripheral.
void rcc_reset_periph_apb1(RCC_APB1RSTR_te periph_position)
Resets an APB1 peripheral via RCC_APB1RSTR.
uint32_t rcc_get_apb1_clk(void)
Returns the current APB1 (low-speed) peripheral bus clock frequency in Hz.
void usart6_irq_data_recv_callback(uint8_t data) __attribute__((weak
Default weak implementation of usart6_irq_data_recv_callback.
void usart1_irq_data_recv_callback(uint8_t data) __attribute__((weak
Default weak implementation of usart1_irq_data_recv_callback.
static void usart_set_baud_rate(USART_CFG_ts *usart_cfg)
Computes and writes the BRR register for the configured baud rate.
static void usart_set_pclk(USART_REGDEF_ts const *instance, EN_STATUS_te en_status)
Enables or disables the peripheral clock for a USART instance.
void usart_send(USART_REGDEF_ts *instance, uint8_t *tx_buffer, uint32_t len)
Blocking USART transmit.
void usart_deinit(USART_REGDEF_ts const *instance)
Deinitializes the USART peripheral, disables its NVIC interrupt, and disables its clock.
void usart_receive(USART_REGDEF_ts const *instance, uint8_t *rx_buffer, uint32_t len)
Blocking USART receive.
void usart_init(USART_CFG_ts *usart_cfg)
Initializes the USART peripheral with the given configuration.
void usart_set_transmission(USART_REGDEF_ts *instance, EN_STATUS_te en_status)
Enables or disables the USART transmitter.
void usart_set_reception(USART_REGDEF_ts *instance, EN_STATUS_te en_status)
Enables or disables the USART receiver.
void usart_get_name(USART_REGDEF_ts const *instance, char *name)
Returns the name string of a USART peripheral instance.
@ USART_HW_FLOW_CONTROL_ENABLED
@ USART_INTERRUPT_EN_TRUE
STM32F401RE MCU-specific peripheral register definitions and bit position enumerations.
STM32F401RE RCC driver public API.
void USART2_IRQHandler(void)
USART2 interrupt handler. Currently empty — no interrupt sources configured.
void USART6_IRQHandler(void)
USART6 interrupt handler. Dispatches RXNE events to usart6_irq_data_recv_callback.
void USART1_IRQHandler(void)
USART1 interrupt handler. Dispatches RXNE events to usart1_irq_data_recv_callback.
void usart_irq_callback(uint8_t data)
Default fallback handler for unimplemented USART receive callbacks.
STM32F401RE USART driver public API.
Configuration structure for initializing a USART peripheral.
USART_OVERSAMPLING_te oversampling
USART_BAUD_RATE_te baud_rate
USART_SAMPLE_BIT_te sample_bit
USART_REGDEF_ts * instance
USART_FRAME_STOP_BITS_te frame_stop_bits
USART_HW_FLOW_CONTROL_te hw_flow_control
USART_FRAME_DATA_BITS_te frame_data_bits
USART_INTERRUPT_EN_te interrupt_en
USART peripheral register map.
uint32_t volatile USART_BRR
uint32_t volatile USART_DR
uint32_t volatile USART_CR3
uint32_t volatile USART_CR1
uint32_t volatile USART_SR
uint32_t volatile USART_CR2