Micro2020/assignment_3/Libraries/drivers/thermostat_shield.h

125 lines
3.0 KiB
C

/*!
* \file
* thermostat_shield.h
* \brief
* Nucleo thermostat shield port file. This file contain the implementation of driver
* calls for the shield.
*
* Author: Christos Choutouridis AEM: 8997
* email : <cchoutou@ece.auth.gr>
*/
#ifndef DRIVERS_THERMOSTAT_SHIELD_H_
#define DRIVERS_THERMOSTAT_SHIELD_H_
#include "NUCLEO_F401RE.h"
#include "driver_types.h"
#include "deque08.h"
/*
* =============== Digital I/O ===============
*/
/*
* =============== LCD ===============
* LCD_BD4 -- D8 -- PA9
* LCD_BD5 -- D7 -- PA8
* LCD_BD6 -- D6 -- PB10
* LCD_BD7 -- D5 -- PB4
* LCD_RS -- D15 -- PB8
* LCD_EN -- D14 -- PB9
* LCD_BL -- D2 -- PA10
*/
void SHIELD_LCD_DB4 (uint8_t en);
void SHIELD_LCD_DB5 (uint8_t en);
void SHIELD_LCD_DB6 (uint8_t en);
void SHIELD_LCD_DB7 (uint8_t en);
void SHIELD_LCD_RS (uint8_t en);
void SHIELD_LCD_EN (uint8_t en);
void SHIELD_LCD_BL (uint8_t en);
/*
* =============== LED ===============
* LED0 -- D4 -- PB5
* LED1 -- D3 -- PB3
*/
void SHIELD_LED0 (uint8_t on);
void SHIELD_LED1 (uint8_t on);
#define LED_RED SHIELD_LED0
#define LED_GREEN SHIELD_LED1
/*
* =============== BRIDGE ===============
* BR1 -- D10 -- PB6
* BR2 -- D9 -- PC7
*/
void SHIELD_BR1 (uint8_t on);
void SHIELD_BR2 (uint8_t on);
/*
* =============== SR04 ===============
* TRIG -- D11 -- PA7
* ECHO -- D12 -- PA6
*/
void SHIELD_TRIG (uint8_t on);
uint8_t SHIELD_ECHO (void);
/*
* ============= 1 Wire USART6 (AF08)===============
* 1W_Tx -- PA11 (OD+PU)
* 1W_Rx -- PA12 (I)
*/
// non-shared resources
#define _1WIRE_UART_INSTANCE (USART6)
#define _1WIRE_UART_INIT_BR (9600)
#define _1WIRE_UART_TIMEOUT (10) /*!< 10msec is good enough */
/*!
* Helper Macros linked to USART used
*/
#define _1WIRE_UART_CLK_ENABLE __HAL_RCC_USART6_CLK_ENABLE
#define _1WIRE_UART_CLK_DISABLE __HAL_RCC_USART6_CLK_DISABLE
LLD_Status_en SHIELD_1W_Init (void);
drv_status_en SHIELD_1W_UART_BR (uint32_t br);
uint16_t SHIELD_1W_RW (uint8_t byte);
uint8_t SHIELD_1W_Rx (void);
uint8_t SHIELD_1W_Tx (uint8_t byte);
LLD_Status_en SHIELD_Init (void);
/*
* ============= Serial console UART2 (AF07)===============
* COM_Tx -- PA2 (PP)
* COM_Rx -- PA3 (I)
*/
#define COM_UART_INSTANCE USART2
#define COM_UART_IRQ USART2_IRQn
#define COM_UART_BAUDRATE (57600)
#define COM_UART_GETCHAR_TIMEOUT (5) // 5sec
#define COM_UART_PUTCHAR_TIMEOUT (10) // 1 [CPU time]
#define COM_BUFFER_SIZE (256)
/*!
* Helper Macros linked to USART used
*/
#define _COM_CLK_ENABLE __HAL_RCC_USART2_CLK_ENABLE
#define _COM_CLK_DISNABLE __HAL_RCC_USART2_CLK_DISABLE
LLD_Status_en COM_Init (void);
LLD_Status_en COM_baudrate (uint32_t br);
int COM_putchar (char c);
int COM_getchar (void);
int COM_Transmit (uint8_t *data, int size);
int COM_CheckReceive (void);
void COM_ReceiveFlush (void);
int COM_Receive (uint8_t *data, int size);
#endif /* DRIVERS_THERMOSTAT_SHIELD_H_ */