Subversion Repositories libSerial

Rev

Rev 8 | Rev 10 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8 Rev 9
Line 4... Line 4...
4
 *  Created on: 4 Jan 2016
4
 *  Created on: 4 Jan 2016
5
 *      Author: Mike
5
 *      Author: Mike
6
 *
6
 *
7
 *      This (ab)uses the STMCubeMX HAL declarations to implement a generic STM32F1xx
7
 *      This (ab)uses the STMCubeMX HAL declarations to implement a generic STM32F1xx
8
 *      USART driver layer
8
 *      USART driver layer
-
 
9
 *
-
 
10
 * Note - this requires the UART interrupt to be globally enabled in STM32CubeMX,
-
 
11
 * but not to generate IRQ handler or HAL driver for the UART.
-
 
12
 *
-
 
13
 *
9
 */
14
 */
10
 
-
 
11
#include "libSerial/serial.h"
15
#include "libSerial/serial.h"
12
 
16
 
13
/* workspaces for the USARTS being used */
17
/* workspaces for the USARTS being used */
14
#if defined SERIAL_UART1
18
#if defined SERIAL_UART1
15
usart_ctl uc1;
19
usart_ctl uc1;
Line 30... Line 34...
30
/* returns the number of characters received by the Rx USART */
34
/* returns the number of characters received by the Rx USART */
31
uint16_t
35
uint16_t
32
SerialCharsReceived(usart_ctl *instance)
36
SerialCharsReceived(usart_ctl *instance)
33
{
37
{
34
  uint16_t result = 0; // assume no characters received yet
38
  uint16_t result = 0; // assume no characters received yet
-
 
39
 
35
  __HAL_UART_DISABLE_IT(instance->Handle, UART_IT_RXNE);
40
  __HAL_UART_DISABLE_IT(instance->Handle, UART_IT_RXNE);
36
 
41
 
37
  if (instance->rx_usart_buffer_full)
42
  if (instance->rx_usart_buffer_full)
38
  { // buffer is full...
43
  { // buffer is full...
39
    result = RX_USART_BUFF_SIZ;
44
    result = RX_USART_BUFF_SIZ;
Line 58... Line 63...
58
 
63
 
59
inline uint8_t
64
inline uint8_t
60
PollSerial(usart_ctl *instance)
65
PollSerial(usart_ctl *instance)
61
{
66
{
62
  uint8_t rc;
67
  uint8_t rc;
63
 
-
 
64
  __HAL_UART_DISABLE_IT(instance->Handle, UART_IT_RXNE);
68
  __HAL_UART_DISABLE_IT(instance->Handle, UART_IT_RXNE);
65
  rc = (instance->rx_usart_buffer_full || (instance->rx_usart_in_Ptr != instance->rx_usart_out_Ptr));
69
  rc = (instance->rx_usart_buffer_full || (instance->rx_usart_in_Ptr != instance->rx_usart_out_Ptr));
66
  __HAL_UART_ENABLE_IT(instance->Handle, UART_IT_RXNE);
70
  __HAL_UART_ENABLE_IT(instance->Handle, UART_IT_RXNE);
67
 
71
 
68
  return rc;
72
  return rc;