Демонстрационная прошивка отладочного комплекта МТС NB-IoT
uart_api.c
См. документацию.
1 #include "uart_api.h"
2 
9 void UART_SendByte(USART_TypeDef* uart_inst,uint8_t b)
10 {
11  uart_inst->DR = b;
12 
13  while (!(uart_inst->SR & USART_SR_TC))
14  {
15  }
16 }
17 
18 void UART_SendString(USART_TypeDef* uart_inst,const uint8_t *str)
19 {
20  uint16_t k;
21 
22  k=0;
23  while ((str[k]!=0) && (k<UART_MAX_STRING_LENGTH))
24  {
25  UART_SendByte(uart_inst,str[k]);
26  k++;
27  }
28 }
29 
30 uint8_t UART_WaitRxByte(USART_TypeDef* uart_inst)
31 {
32  while (!(uart_inst->SR & USART_SR_RXNE))
33  {
34  }
35 
36  return uart_inst->DR;
37 }
38 
39 void init_uart(USART_TypeDef* uart_inst,const uint32_t baudrate,const uint32_t sys_clk,uint8_t enable_rxne_int)
40 {
41  const float temp_float_baudrate = ((float)sys_clk)/(16.0*baudrate);
42  const uint32_t temp_baud_whole = (uint32_t)temp_float_baudrate;
43  const uint32_t temp_baud_frac = (temp_float_baudrate - ((float)temp_baud_whole))*16.0;
44 
45  uart_inst->BRR = (temp_baud_whole<<4) | temp_baud_frac;
46 
47  if (enable_rxne_int)
48  {
49  uart_inst->CR1 = USART_CR1_RE | USART_CR1_TE | USART_CR1_RXNEIE | USART_CR1_UE;
50  }
51  else
52  {
53  uart_inst->CR1 = USART_CR1_RE | USART_CR1_TE | USART_CR1_UE;
54  }
55 
56  uart_inst->SR = 0;
57 }
UART_WaitRxByte
uint8_t UART_WaitRxByte(USART_TypeDef *uart_inst)
Ожидает приема байта через указанный USART.
Definition: uart_api.c:30
UART_SendByte
void UART_SendByte(USART_TypeDef *uart_inst, uint8_t b)
Посылает байт через указанный USART.
Definition: uart_api.c:9
UART_MAX_STRING_LENGTH
#define UART_MAX_STRING_LENGTH
Максимальная длина строки, вывод которой в UART поддерживается функцией UART_SendString()
Definition: uart_api.h:55
uart_api.h
init_uart
void init_uart(USART_TypeDef *uart_inst, const uint32_t baudrate, const uint32_t sys_clk, uint8_t enable_rxne_int)
Настройка модуля USART для работы с указанной скоростью.
Definition: uart_api.c:39
UART_SendString
void UART_SendString(USART_TypeDef *uart_inst, const uint8_t *str)
Definition: uart_api.c:18