下面就是main里面的主要代码:
int main(void)
{
HAL_Init();//初始化HAL库
SystemClock_Config();//配置系统时钟
/* 初始化外围设置 */
MX_GPIO_Init();
MX_DMA_Init();
MX_ADC_Init();
MX_LPUART1_UART_Init();
MX_USART1_UART_Init();
MX_RTC_Init();
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3, GPIO_PIN_SET); //打开LORA电源PB3(1)
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4, GPIO_PIN_RESET); //M0 M1同时配置0处于工作状态(M0)
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5, GPIO_PIN_RESET); //(M1)
HAL_Delay (1000);//延时10毫秒
HAL_UART_Transmit(&hlpuart1,SendBuffer,sizeof(SendBuffer),10); //串口1向LORA发送整个缓冲区
YCWorkStatus=1;
RTC_HandleTypeDef *hrtcTMP;
hrtcTMP=&hrtc;//获取当前的RTC实例
while (1)
{
GetCurrentDateTime();
MainSendCount=MainSendCount+1;
HAL_UART_Transmit(&hlpuart1,SendBuffer,sizeof(SendBuffer),10); //串口1向LORA发送整个缓冲区
HAL_Delay (200);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_15, GPIO_PIN_SET);HAL_Delay (200); //P15闪烁
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_15, GPIO_PIN_RESET);HAL_Delay (200); //P15闪烁
SendBuffer[40]=MainSendCount;
if(MainSendCount>=255){
MainSendCount=0;
}
if(IRQHandlerCount>=2){
HAL_NVIC_DisableIRQ(RTC_IRQn);
IRQHandlerCount=0;
SendBuffer[20]=0x99;
SendBuffer[21]=0x99;
SendBuffer[22]=0x99;
SendBuffer[23]=0x99;
SendBuffer[24]=0x99;
SendBuffer[25]=0x99;
GetCurrentDateTime();//得到当前的时间和日期
ITMP=(uint8_t)CurrentTime.Minutes+2;
RTC_Set_AlarmA(CurrentTime.Hours,ITMP,0);
SendBuffer[51]=CurrentTime.Minutes;
SendBuffer[52]=ITMP;
//__HAL_RCC_APB1_RELEASE_RESET();
//__HAL_RCC_APB2_RELEASE_RESET();
//__HAL_RTC_ALARMA_DISABLE(hrtcTMP);//使闹钟A不能
//__HAL_RTC_ALARM_DISABLE_IT(hrtcTMP,RTC_IT_ALRA);//使闹钟A中断不能
//__HAL_RTC_ALARM_CLEAR_FLAG(hrtcTMP, RTC_FLAG_ALRAF);//清理标志
//__HAL_RTC_WAKEUPTIMER_DISABLE(hrtcTMP);
//__HAL_RTC_ALARM_ENABLE_IT
//
//HAL_NVIC_EnableIRQ(RTC_IRQn);
//__HAL_RCC_RTC_DISABLE();
//HAL_NVIC_DisableIRQ(RTC_IRQn);
//__HAL_RTC_ALARM_EXTI_DISABLE_IT();
//__HAL_RTC_ALARM_EXTI_CLEAR_FLAG();
//__HAL_RTC_ALARM_EXTI_DISABLE_IT();
}
}
}
|