1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
| #include "function.h" #include "gpio.h" #include "stdio.h" #include "string.h" #include "oled.h" #include "lora.h"
extern UART_HandleTypeDef huart2; extern DMA_HandleTypeDef hdma_usart2_tx; extern DMA_HandleTypeDef hdma_usart2_rx;
extern I2C_HandleTypeDef hi2c3; extern RTC_HandleTypeDef hrtc; extern SPI_HandleTypeDef hspi1;
#define Usart_RX_buffer_len 100 unsigned char usart_rx_sec_len; unsigned char usart_rx_sec_flag; unsigned char usart_rx_buffer[Usart_RX_buffer_len];
void ALL_Init(void) { HAL_TIM_Base_Start_IT(&htim7); Usart_RX_Init(); IIC_OLED_Init(100); }
void Usart_RX_Init(void) { __HAL_UART_ENABLE_IT(&huart2,UART_IT_IDLE); HAL_UART_Receive_DMA(&huart2,usart_rx_buffer,Usart_RX_buffer_len); }
void Usart_RX_EXTI(void) { if(__HAL_UART_GET_FLAG(&huart2,UART_FLAG_IDLE) == SET) { __HAL_UART_CLEAR_IDLEFLAG(&huart2); HAL_UART_DMAStop(&huart2); usart_rx_sec_len = Usart_RX_buffer_len - __HAL_DMA_GET_COUNTER(&hdma_usart2_rx); usart_rx_sec_flag=1; } } void Usart_RX_DEAL(void) { if(usart_rx_sec_flag==1) {
if((Usart_RX_mess[0]=='L') && (Usart_RX_mess[1]=='E') && (Usart_RX_mess[2]=='D')) { HAL_UART_Transmit_DMA(&huart2,Usart_RX_mess,Usart_RX_sec_len); }
usart_rx_sec_flag=0; usart_rx_sec_len=0; HAL_UART_Receive_DMA(&huart2,usart_rx_buffer,Usart_RX_buffer_len); } }
unsigned char SPI_WriteRead(unsigned char addr,unsigned char mss) { extern SPI_HandleTypeDef hspi1; unsigned char tx_data[2],rx_data[2]; tx_data[0]=addr; tx_data[1]=mss; HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port, SPI1_NSS_Pin, GPIO_PIN_RESET); HAL_SPI_TransmitReceive(&hspi1,tx_data,rx_data,2,0xff); HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port, SPI1_NSS_Pin, GPIO_PIN_SET); return rx_data[1]; }
void IIC_OLED_Init(unsigned char ms) { HAL_GPIO_WritePin(OLED_POWER_GPIO_Port, OLED_POWER_Pin, GPIO_PIN_RESET); HAL_Delay(ms); OLED_Init(); OLED_Clear(); }
void OLED_Write(unsigned char addr,unsigned char data) { unsigned char pdata[2]; pdata[0]=addr; pdata[1]=data; HAL_I2C_Master_Transmit(&hi2c3,0x78,pdata,2,0xff); }
unsigned char * RTC_Data(void) { static unsigned char rtc_data[7]; RTC_TimeTypeDef rtc_time_data; RTC_DateTypeDef rtc_date_data; HAL_RTC_GetTime(&hrtc,&rtc_time_data,RTC_FORMAT_BIN); HAL_RTC_GetDate(&hrtc,&rtc_date_data,RTC_FORMAT_BIN); rtc_data[0]=rtc_date_data.Year; rtc_data[1]=rtc_date_data.Month; rtc_data[2]=rtc_date_data.WeekDay; rtc_data[3]=rtc_date_data.Date; rtc_data[4]=rtc_time_data.Hours; rtc_data[5]=rtc_time_data.Minutes; rtc_data[6]=rtc_time_data.Seconds; return rtc_data; }
int fputc(int ch,FILE *f) { HAL_UART_Transmit(&huart2,(uint8_t *)&ch,1,0xffff); return ch; }
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if(USER_KEY_Pin==GPIO_Pin) { flag_send_rtc=1; } } void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { static int time_flag=0; if(htim7.Instance == TIM7) { if(++time_flag>1000) { time_flag=0; flag_num=1; } } }
|