#include "devicegpioinit.h"
|
#include "project_test.h"
|
#include "gpio.h"
|
#include "FM33A0XXEV.h"
|
#include "1gprs.h"
|
#include "power_manage.h"
|
#include "rtc.h"
|
#include "upper_computer.h"
|
#include "ir_nec.h"
|
#include "gprs_module_api.h"
|
#include "1lcd_new.h"
|
#include "1powermanage.h"
|
|
|
volatile uint32_t msTicks = 0;
|
volatile uint32_t get_time = 0;
|
volatile uint32_t delay_time = 0;
|
volatile uint32_t delay_time1 = 0;
|
volatile uint32_t delay_time2 = 0;
|
|
// int low_push_flag = 0;
|
// int alka_lose_flag = 0;
|
// int lith_lose_flag = 0;
|
|
RS485_MODULE_PARA_T rs485_modeule_pagra;
|
uint32_t Sys_GetTick(void)
|
{
|
return msTicks;
|
}
|
|
void delay(unsigned int ms) // ·Ç×èÈû
|
{
|
clock_t start_time = Sys_GetTick(); // ¼Ç¼Æðʼʱ¼ä
|
while (Sys_GetTick() < start_time + ms)
|
; // Ñ»·µÈ´ý
|
}
|
#if Debug_Model
|
|
void AppNvr_Print(void)
|
{
|
CMU_ClocksType CMU_Clocks;
|
CMU_GetClocksFreq(&CMU_Clocks);
|
printf("/**************************************************/\r\n");
|
printf("/applicationVersion start/\r\n");
|
printf("Build Date = %s %s\r\n", __DATE__, __TIME__);
|
printf("System Clock Frequency: %lu Hz\n", CMU_Clocks.SYSCLK_Frequency);
|
printf("/**************************************************/\r\n");
|
printf("\r\n");
|
}
|
|
|
int fputc(int ch, FILE *f)
|
{
|
UARTx_TXBUF_Write(UART5, (uint8_t)ch); // ·¢ËÍ´®¿Ú
|
while (RESET == UARTx_ISR_TXSE_Chk(UART5))
|
; // µÈ´ý·¢ËÍÍê³É
|
return ch;
|
}
|
#endif
|
|
void Timer_Init(uint32_t psc, uint32_t arr_value)
|
{
|
CMU_PERCLK_SetableEx(BSTIMCLK, ENABLE); // ÍâÉè×ÜÏßʱÖÓʹÄÜ
|
CMU_OPCCR2_BSTCKS_Set(CMU_OPCCR2_BSTCKS_SYSCLK); // Ñ¡Ôñ¹¤×÷ʱÖÓÔ´
|
CMU_OPCCR2_BSTCKE_Setable(ENABLE); // ¹¤×÷ʱÖÓԴʹÄÜ
|
|
BSTIM_CR1_ARPE_Setable(ENABLE); // Ô¤×°ÔØÊ¹ÄÜ
|
// BSTIM_CR1_OPM_Set(BSTIM_CR1_OPM_STOP); //Update Event·¢Éúʱ¼ÆÊýÆ÷Í£Ö¹£¨×Ô¶¯ÇåÁãCEN£©
|
BSTIM_CR1_OPM_Set(BSTIM_CR1_OPM_CONTINUE); // UE²úÉúʱ¼ÆÊýÆ÷²»Í£Ö¹
|
|
BSTIM_PSCR_Write(psc - 1);
|
BSTIM_ARR_Write(arr_value - 1);
|
|
NVIC_DisableIRQ(BSTIM_IRQn);
|
NVIC_SetPriority(BSTIM_IRQn, 1); // ÖжÏÓÅÏȼ¶ÅäÖÃ
|
NVIC_EnableIRQ(BSTIM_IRQn);
|
|
/*½â¾ö¿ªÆô¶¨Ê±Æ÷»áÖ±½Ó½øÈëÒ»´ÎÖжϵÄÎÊÌâ*/
|
BSTIM_IER_UIE_Setable(ENABLE); // UpdateÖжÏʹÄÜ
|
|
BSTIM_CR1_CEN_Setable(ENABLE); // ¼ÆÊýÆ÷ʹÄÜ
|
BSTIM_ISR_UIF_Clr();
|
}
|
|
void Iic_Init_Test(void)
|
{
|
CMU_PERCLK_SetableEx(PADCLK, ENABLE);
|
OutputIO(LCD_SDA_PIN_GROUP, LCD_SDA_PIN_NUM, OUT_PUSHPULL); // Òº¾§Çý¶¯IIC pd3
|
OutputIO(LCD_SCL_PIN_GROUP, LCD_SCL_PIN_NUM, OUT_PUSHPULL); // pd2
|
}
|
|
void ALL_ADC_Init_Test(void)
|
{
|
CMU_PERCLK_SetableEx(PADCLK, ENABLE); // PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý
|
AnalogIO_H(GPIO_Pin_1); // ¼îµçµçѹ²É¼¯ PH1
|
|
AnalogIO(GPIOF, GPIO_Pin_6); // ﮵çµçѹ²É¼¯
|
GPIOx_ANEN_Setable(GPIOF, GPIO_Pin_6, ENABLE);
|
}
|
|
void UART_Init_test(void)
|
{
|
UART_SInitTypeDef UART_para; // UART³õʼ»¯½á¹¹Ìå
|
CMU_ClocksType CMU_Clocks; // ϵͳ¸÷ʱÖÓÆµÂʽṹÌå ÔÚ´ËÓë¼ÆËã²¨ÌØÂÊÓйØ
|
DMA_InitTypeDef DMA_InitStructure; // DMA³õʼ»¯²ÎÊý½á¹¹Ìå
|
|
/*UART5 IO ÅäÖÃ*/
|
CMU_PERCLK_SetableEx(PADCLK, ENABLE); // PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý
|
AltFunIO(GPIOA, GPIO_Pin_8, ALTFUN_NORMAL); // ÉÏλ»úRS485¿ÚµÄÊý¾Ý½ÓÊÕ¡£¸Ã½Ó¿ÚÔÚÍ⹩µçʱ²ÅÓÐЧ¡£
|
AltFunIO(GPIOA, GPIO_Pin_9, ALTFUN_NORMAL); // ÉÏλ»úRS485¿ÚµÄÊý¾Ý·¢ËÍ
|
OutputIO(GPIOA, GPIO_Pin_10, OUT_PUSHPULL); // UART1_RE ÉÏλ»úRS485¿ÚµÄÊÕ·¢¿ØÖÆ£¨¸ß·¢µÍÊÕ£©
|
UART5_RE_ON;
|
|
UART_para.BaudRate = 115200;
|
UART_para.DataBit = Eight8Bit; // Êý¾ÝλÊý
|
UART_para.ParityBit = NONE; // ÆæÅ¼Ð£Ñé
|
UART_para.StopBit = OneBit; // ֹͣλ
|
CMU_GetClocksFreq(&CMU_Clocks); // »ñȡϵͳ¸÷ʱÖÓÆµÂÊ
|
UART_SInit(UART5, &UART_para, &CMU_Clocks); // ³õʼ»¯uart
|
NVIC_DisableIRQ(UART5_IRQn);
|
|
UARTx_CSR_RXEN_Setable(UART5, ENABLE); // ´ò¿ª½ÓÊÕʹÄÜ
|
UARTx_CSR_TXEN_Setable(UART5, ENABLE); // ´ò¿ª·¢ËÍʹÄÜ
|
UARTx_ISR_RXBF_Clr(UART5);
|
CMU_PERCLK_SetableEx(DMACLK, ENABLE);
|
// DMAʱÖÓʹÄÜ
|
DMA_GCR_DMAEN_Setable(ENABLE); // DMA×ÜʹÄÜ
|
DMA_InitStructure.CHx = DMA_CH5; // DMAͨµÀºÅÉèÖÃ
|
DMA_InitStructure.CHxPRI = DMA_CHxCR_CHxPRI_HIGH; // ͨµÀÓÅÏȼ¶ÉèÖÃ
|
DMA_InitStructure.CHxINC = DMA_CHxCR_CHxINC_INCREASE; // ͨµÀµØÖ·Ôö³¤·½Ïò
|
DMA_InitStructure.CHxSSEL = DMA_CHxCR_CH5SSEL_UART5_RX; // ÍâÉèͨµÀÑ¡Ôñ
|
DMA_InitStructure.CHxDIR = DMA_CHxCR_DIR_TO_RAM; // Êý¾Ý´«Êä·½ÏòÉèÖÃ
|
DMA_InitStructure.CHxTSIZE = UC_RECV_LEN_MAX - 1; // ͨµÀ´«Ê䳤¶È
|
DMA_InitStructure.CHxRAMAD = (uint32)uc_recv_para_g.uc_recv_buf_union.uc_recv_buf; // Ä¿±êµØÖ·
|
DMA_InitStructure.CHxBDW = DMA_CHxCR_BDW_8BITS; // ͨµÀ´«Êä´ø¿í
|
DMA_InitStructure.CHxFTIE = DISABLE; // ͨµÀ´«ÊäÍê³ÉÖжÏʹÄÜ
|
DMA_InitStructure.CHxHTIE = DISABLE; // ͨµÀ´«Êä°ë³ÌÖÕ¶ËʹÄÜ
|
DMA_InitStructure.CHxEN = ENABLE; // ͨµÀʹÄÜ
|
NVIC_DisableIRQ(DMA_IRQn);
|
DMA_ISR_DMACHFT_Clr(DMA_CH5);
|
DMA_Init(&DMA_InitStructure); // DMAÅäÖòÎÊýдÈë
|
|
#ifdef RS485_MODEL_EQUIP
|
CMU_PERCLK_SetableEx(DMACLK, ENABLE); // DMAʱÖÓʹÄÜ
|
DMA_GCR_DMAEN_Setable(ENABLE); // DMA×ÜʹÄÜ
|
|
/*UART1 IO ÅäÖÃ*/
|
CMU_PERCLK_SetableEx(PADCLK, ENABLE); // PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý
|
AltFunIO(GPIOB, GPIO_Pin_0, ALTFUN_NORMAL); // PB0 UART1 RX
|
AltFunIO(GPIOB, GPIO_Pin_1, ALTFUN_NORMAL); // PB1 UART1 TX
|
OutputIO(GPIOA, GPIO_Pin_14, OUT_PUSHPULL); // EQUIP RE
|
OutputIO(GPIOA, GPIO_Pin_15, OUT_PUSHPULL); // 485_PWR_EN
|
// UART¹¤×÷ʱÖÓÔ´Ñ¡Ôñ Ö»ÓÐUART0¡¢1ÐèҪѡÔñ ÆäËûUART¶Ë¿ÚÔݲ»ÐèÒª Ö±½Ó×¢Êͼ´¿É
|
UART_para.ClockSrc = CMU_OPCCR1_UART1CKS_APBCLK; // UART1¹¤×÷ʱÖÓÑ¡Ôñ
|
UART_para.BaudRate = 9600;
|
UART_para.DataBit = Eight8Bit; // Êý¾ÝλÊý
|
UART_para.ParityBit = NONE; // ÆæÅ¼Ð£Ñé
|
UART_para.StopBit = OneBit; // ֹͣλ
|
|
CMU_GetClocksFreq(&CMU_Clocks); // »ñȡϵͳ¸÷ʱÖÓÆµÂÊ
|
UART_SInit(UART1, &UART_para, &CMU_Clocks); // ³õʼ»¯uart
|
|
/*NVICÖжÏÓÅÏȼ¶ÒÔ¼°ÊÇ·ñ´ò¿ªÖжÏÅäÖÃ*/
|
NVIC_DisableIRQ(UART1_IRQn);
|
UARTx_TODR_RXTO_LEN_Set(UART1, 255);
|
UARTx_ISR_RXTO_Clr(UART1);
|
UARTx_IER_RXTO_IE_Setable(UART1, ENABLE);
|
NVIC_EnableIRQ(UART1_IRQn);
|
UARTx_CSR_RXTOEN_Setable(UART1, ENABLE);
|
UARTx_CSR_RXEN_Setable(UART1, ENABLE); // ´ò¿ª½ÓÊÕʹÄÜ
|
UARTx_CSR_TXEN_Setable(UART1, ENABLE); // ´ò¿ª·¢ËÍʹÄÜ
|
UARTx_ISR_RXBF_Clr(UART1);
|
|
DMA_InitStructure.CHx = DMA_CH3; // DMAͨµÀºÅÉèÖÃ
|
DMA_InitStructure.CHxPRI = DMA_CHxCR_CHxPRI_HIGH; // ͨµÀÓÅÏȼ¶ÉèÖÃ
|
DMA_InitStructure.CHxINC = DMA_CHxCR_CHxINC_INCREASE; // ͨµÀµØÖ·Ôö³¤·½Ïò
|
DMA_InitStructure.CHxSSEL = DMA_CHxCR_CH3SSEL_UART1_RX; // ÍâÉèͨµÀÑ¡Ôñ
|
DMA_InitStructure.CHxDIR = DMA_CHxCR_DIR_TO_RAM; // Êý¾Ý´«Êä·½ÏòÉèÖÃ
|
DMA_InitStructure.CHxTSIZE = UC_RECV_LEN_MAX - 1; // ͨµÀ´«Ê䳤¶È
|
DMA_InitStructure.CHxRAMAD = (uint32)rs485_modeule_pagra.rs485_recv_buf; // Ä¿±êµØÖ·
|
DMA_InitStructure.CHxBDW = DMA_CHxCR_BDW_8BITS; // ͨµÀ´«Êä´ø¿í
|
DMA_InitStructure.CHxFTIE = DISABLE; // ͨµÀ´«ÊäÍê³ÉÖжÏʹÄÜ
|
DMA_InitStructure.CHxHTIE = DISABLE; // ͨµÀ´«Êä°ë³ÌÖÕ¶ËʹÄÜ
|
DMA_InitStructure.CHxEN = ENABLE; // ͨµÀʹÄÜ
|
|
NVIC_DisableIRQ(DMA_IRQn);
|
DMA_ISR_DMACHFT_Clr(DMA_CH3);
|
DMA_Init(&DMA_InitStructure); // DMAÅäÖòÎÊýдÈë
|
|
#else
|
CMU_PERCLK_SetableEx(DMACLK, ENABLE); // DMAʱÖÓʹÄÜ
|
DMA_GCR_DMAEN_Setable(ENABLE); // DMA×ÜʹÄÜ
|
|
/*UART1 IO ÅäÖÃ*/
|
CMU_PERCLK_SetableEx(PADCLK, ENABLE); // PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý
|
AltFunIO(GPIOE, GPIO_Pin_3, ALTFUN_NORMAL); // PE3 UART1 RX
|
AltFunIO(GPIOE, GPIO_Pin_4, ALTFUN_NORMAL); // PE4 UART1 TX
|
// UART¹¤×÷ʱÖÓÔ´Ñ¡Ôñ Ö»ÓÐUART0¡¢1ÐèҪѡÔñ ÆäËûUART¶Ë¿ÚÔݲ»ÐèÒª
|
UART_para.ClockSrc = CMU_OPCCR1_UART1CKS_APBCLK; // UART1¹¤×÷ʱÖÓÑ¡Ôñ
|
UART_para.BaudRate = 115200;
|
UART_para.DataBit = Eight8Bit; // Êý¾ÝλÊý
|
UART_para.ParityBit = NONE; // ÆæÅ¼Ð£Ñé
|
UART_para.StopBit = OneBit; // ֹͣλ
|
CMU_GetClocksFreq(&CMU_Clocks); // »ñȡϵͳ¸÷ʱÖÓÆµÂÊ
|
UART_SInit(UART1, &UART_para, &CMU_Clocks); // ³õʼ»¯uart
|
|
/*NVICÖжÏÓÅÏȼ¶ÒÔ¼°ÊÇ·ñ´ò¿ªÖжÏÅäÖÃ*/
|
NVIC_DisableIRQ(UART1_IRQn);
|
UARTx_TODR_RXTO_LEN_Set(UART1, 255); // Ö»ÓÐuart0ºÍuart1ÓнÓÊÕ³¬Ê±ÖжÏ
|
UARTx_ISR_RXTO_Clr(UART1);
|
UARTx_IER_RXTO_IE_Setable(UART1, ENABLE);
|
NVIC_EnableIRQ(UART1_IRQn);
|
UARTx_CSR_RXTOEN_Setable(UART1, ENABLE);
|
/*NVICÖжÏÓÅÏȼ¶ÒÔ¼°ÊÇ·ñ´ò¿ªÖжÏÅäÖÃ*/
|
UARTx_CSR_RXEN_Setable(UART1, ENABLE); // ´ò¿ª½ÓÊÕʹÄÜ
|
UARTx_CSR_TXEN_Setable(UART1, ENABLE); // ´ò¿ª·¢ËÍʹÄÜ
|
UARTx_ISR_RXBF_Clr(UART1);
|
DMA_InitStructure.CHx = DMA_CH3; // DMAͨµÀºÅÉèÖÃ
|
DMA_InitStructure.CHxPRI = DMA_CHxCR_CHxPRI_HIGH; // ͨµÀÓÅÏȼ¶ÉèÖÃ
|
DMA_InitStructure.CHxINC = DMA_CHxCR_CHxINC_INCREASE; // ͨµÀµØÖ·Ôö³¤·½Ïò
|
DMA_InitStructure.CHxSSEL = DMA_CHxCR_CH3SSEL_UART1_RX; // ÍâÉèͨµÀÑ¡Ôñ
|
DMA_InitStructure.CHxDIR = DMA_CHxCR_DIR_TO_RAM; // Êý¾Ý´«Êä·½ÏòÉèÖÃ
|
DMA_InitStructure.CHxTSIZE = UC_RECV_LEN_MAX - 1; // ͨµÀ´«Ê䳤¶È
|
DMA_InitStructure.CHxRAMAD = (uint32)gprs_module_para_g.gprs_recv_buf; // Ä¿±êµØÖ·
|
DMA_InitStructure.CHxBDW = DMA_CHxCR_BDW_8BITS; // ͨµÀ´«Êä´ø¿í
|
DMA_InitStructure.CHxFTIE = DISABLE; // ͨµÀ´«ÊäÍê³ÉÖжÏʹÄÜ
|
DMA_InitStructure.CHxHTIE = DISABLE; // ͨµÀ´«Êä°ë³ÌÖÕ¶ËʹÄÜ
|
DMA_InitStructure.CHxEN = ENABLE; // ͨµÀʹÄÜ
|
NVIC_DisableIRQ(DMA_IRQn);
|
DMA_ISR_DMACHFT_Clr(DMA_CH3);
|
DMA_Init(&DMA_InitStructure); // DMAÅäÖòÎÊýдÈë
|
// memset(gprs_module_para_g.gprs_recv_buf, 0, sizeof(gprs_module_para_g.gprs_recv_buf));
|
#endif
|
}
|
|
void ALL_GPIO_EXTI_test(void)
|
{
|
// LOW_PULSE_config(); // Âö³åÖжÏ
|
GPIO_EXTI_Init(LOW_PWR_INT_PIN_GROUP, LOW_PWR_INT_PIN_NUM, EXTI_FALLING, ENABLE); // Íâ½ÓÉ豸µÍµç±¨¾¯ÖжÏ
|
GPIO_EXTI_Init(UNDER_PWR_INT_PIN_GROUP, UNDER_PWR_INT_PIN_NUM, EXTI_FALLING, ENABLE); // Íâ½ÓÉ豸ǷѹµÍ±¨¾¯ÖжÏ
|
// GPIO_EXTI_Init(GPIOH, GPIO_Pin_0, EXTI_BOTH, ENABLE); // ¼îµçµôµçÖжÏ
|
GPIO_EXTI_Init(LITH_BAT_LOW_PWR_PIN_GROUP, LITH_BAT_LOW_PWR_PIN_NUM, EXTI_FALLING, ENABLE); // ﮵çµôµçÖжÏ
|
// GPIO_EXTI_Init(GPIOF, GPIO_Pin_15, EXTI_BOTH, ENABLE);//δ³É¹¦
|
// GPIO_EXTI_Init(GPIOE, GPIO_Pin_9, EXTI_BOTH, ENABLE);//³É¹¦
|
/*NVICÖжÏÅäÖÃ*/
|
NVIC_DisableIRQ(GPIO_IRQn);
|
NVIC_SetPriority(GPIO_IRQn, 2); // ÖжÏÓÅÏȼ¶ÅäÖÃ
|
NVIC_EnableIRQ(GPIO_IRQn);
|
}
|
|
void All_GPIO_Init_test(void)
|
{
|
CMU_PERCLK_SetableEx(PADCLK, ENABLE);
|
OutputIO(GPIOD, GPIO_Pin_8, OUT_PUSHPULL); // led PD8
|
|
OutputIO(GPIO_GPRS_POWER_PIN_GROUP, GPIO_GPRS_POWER_PIN_NUM, OUT_PUSHPULL); // 3.8v ʹÄÜÒý½Å
|
// OutputIO(GPIOE, GPIO_Pin_5, OUT_PUSHPULL); // 3.8V PE5
|
OutputIO(GPRS_PWR_EN_PIN_GROUP, GPRS_PWR_EN_PIN_NUM, OUT_PUSHPULL); // ÎÞÏßÄ£¿éµçÔ´¿ØÖÆ
|
|
InputtIO(GPIOF, GPIO_Pin_14, IN_PULLUP); // KEY3 PF14
|
InputtIO(GPIOF, GPIO_Pin_15, IN_PULLUP); // KEY2 PF15
|
InputtIO(GPIOE, GPIO_Pin_9, IN_PULLUP); // KEY1 PE9
|
// GPIO_SetBits(GPIOF, GPIO_Pin_14);
|
|
OutputIO(OUTPUT2_EN_PIN_GROUP, OUTPUT2_EN_PIN_NUM, OUT_PUSHPULL); // SEPICµçÔ´Êä³ö PB11
|
OutputIO(OUTPUT1_EN_PIN_GROUP, OUTPUT1_EN_PIN_NUM, OUT_PUSHPULL); // PB12
|
OUTPUT2_EN_OFF;
|
OUTPUT1_EN_OFF;
|
|
OutputIO(POWER_12V_EN_PIN_GROUP, POWER_12V_EN_PIN_NUM, OUT_PUSHPULL); // +12V pb15
|
power12V_OFF;
|
|
OutputIO(POWER_9V_EN_PIN_GROUP, POWER_9V_EN_PIN_NUM, OUT_PUSHPULL); // 9V PB14
|
power9V_OFF;
|
|
OutputIO(GPIOB, GPIO_Pin_13, OUT_PUSHPULL); // boost_en pb13
|
BOOST_EN_OFF;
|
|
InputtIO_H(LOWPLUSE_PIN_NUM, IN_NORMAL); // Âö³åÖжÏÏß ph3
|
|
InputtIO(UNCAP_INT_PIN_GROUP, UNCAP_INT_PIN_NUM, IN_NORMAL); // ¿ª¸Ç¼ì²â£¬PD1
|
|
OutputIO(GPIOA, GPIO_Pin_0, OUT_PUSHPULL); // LP_LOSE PA0
|
OutputIO(GPIOA, GPIO_Pin_1, OUT_PUSHPULL); // LV_LOSE PA1
|
OutputIO(GPIOA, GPIO_Pin_2, OUT_PUSHPULL); // UV_LOSE PA2
|
OutputIO(GPIOA, GPIO_Pin_3, OUT_PUSHPULL); // CV_LOSE PA3
|
|
OutputIO(GPIOF, GPIO_Pin_0, OUT_PUSHPULL); // LCD_3V3_EN PF14
|
LCD_3V3_ON; // Òº¾§3.3v¹©µç
|
InputtIO(LCD_RD_CLK_PIN_GROUP, LCD_RD_CLK_PIN_NUM, IN_NORMAL); // Òº¾§°æ±¾ÅÐ¶Ï PD4
|
InputtIO(LCD_CS_PIN_GROUP, LCD_CS_PIN_NUM, IN_NORMAL); // Òº¾§°æ±¾ÅÐ¶Ï PD4
|
|
InputtIO(LOW_PWR_INT_PIN_GROUP, LOW_PWR_INT_PIN_NUM, IN_PULLUP); // Íâ½ÓÉ豸µÍµç±¨¾¯ÖжÏÊäÈë PB2
|
InputtIO(UNDER_PWR_INT_PIN_GROUP, UNDER_PWR_INT_PIN_NUM, IN_PULLUP); // Íâ½ÓÉ豸ǷѹµÍ±¨¾¯ÖжÏÊäÈë PB3
|
InputtIO(ALARM_LINE_PIN_GROUP, ALARM_LINE_PIN_NUM, IN_PULLUP); // ¹Ø·§±¨¾¯ÊäÈë PA13
|
|
OutputIO(ALKA_TEST_EN_PIN_GROUP, ALKA_TEST_EN_PIN_NUM, OUT_PUSHPULL); // ¼îµç²É¼¯¿ØÖÆ PF4
|
OutputIO(LITH_TEST_EN_PIN_GROUP, LITH_TEST_EN_PIN_NUM, OUT_PUSHPULL); // ﮵ç²É¼¯¿ØÖÆ PF3
|
|
InputtIO(LITH_BAT_LOW_PWR_PIN_GROUP, LITH_BAT_LOW_PWR_PIN_NUM, IN_PULLUP); // ﮵çµÍµç¼æÈݵôµç¼ì²â PD0
|
InputtIO_H(GPIO_Pin_0, IN_NORMAL); // ¼îµçµôµç¼ì²â
|
|
OutputIO(Motor_A_PIN_GROUP, Motor_A_PIN_NUM, OUT_PUSHPULL); // ¿ª¹Ø¿ØÖÆÏßA pb8
|
OutputIO(Motor_B_PIN_GROUP, Motor_B_PIN_NUM, OUT_PUSHPULL); // pb9
|
|
OutputIO(BORROW_PWR_EN_PIN_NUM_GROUP, BORROW_PWR_EN_PIN_NUM, OUT_PUSHPULL); // ½èµç PG2
|
|
OutputIO(EX_PWR_EN_PIN_GROUP, EX_PWR_EN_PIN_NUM, OUT_PUSHPULL); // ¿ØÖƹ©µç PG3
|
InputtIO(LIMIT_TRIG_PIN_GROUP, LIMIT_TRIG_PIN_NUM, IN_NORMAL); // pc13
|
|
InputtIO(GPIOG, GPIO_Pin_7, IN_NORMAL); // ¸É»Æ¹Ü±¨¾¯ pg7
|
|
InputtIO(HWID0_PIN_GROUP, HWID0_PIN_NUM, IN_NORMAL); // ¼ì²âÍâµç PF5
|
}
|
|
#if 0
|
void GPIO_IRQHandler(void) // Âö³åÖжÏʶ±ð
|
{
|
if (GPIO_EXTI_EXTIISR_ChkEx(LOWPLUSE_PIN_GROUP, LOWPLUSE_PIN_NUM) == SET)
|
{
|
GPIO_EXTI_EXTIISR_ClrEx(LOWPLUSE_PIN_GROUP, LOWPLUSE_PIN_NUM);
|
low_push_flag = 1;
|
}
|
if (GPIO_EXTI_EXTIISR_ChkEx(GPIOH, GPIO_Pin_0) == SET)
|
{
|
GPIO_EXTI_EXTIISR_ClrEx(GPIOH, GPIO_Pin_0);
|
alka_lose_flag = 1;
|
}
|
if (GPIO_EXTI_EXTIISR_ChkEx(LITH_BAT_LOW_PWR_PIN_GROUP, LITH_BAT_LOW_PWR_PIN_NUM) == SET)
|
{
|
GPIO_EXTI_EXTIISR_ClrEx(LITH_BAT_LOW_PWR_PIN_GROUP, LITH_BAT_LOW_PWR_PIN_NUM);
|
lith_lose_flag = 1;
|
}
|
}
|
#endif
|
|
void project_test_1(void) // PD8 5S
|
{
|
if (Sys_GetTick() - get_time > 7000)
|
{
|
get_time = Sys_GetTick();
|
LED_TOG;
|
printf("circulate tun on led\r\n");
|
}
|
IWDT_Clr();
|
}
|
|
void project_test_2(void)
|
{
|
IWDT_Clr();
|
if (HWID0_READ == 0)
|
{
|
EX_PWR_EN_H;
|
}
|
else
|
{
|
EX_PWR_EN_L;
|
}
|
Gprs_Uart1_Rx_DMA_CH3_Check();
|
Gprs_Uart1_Receive_Data();
|
if ((GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_14) == 0) || (GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_15) == 0)) // ¶Ì°´ key3 ÎÞÏßÉÏ·¢+ÎÞÏßÉÏ·¢
|
{
|
delay_ms(50);
|
if (GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_14) == 0) // key3
|
{
|
printf("Turn_On power 3.3v and send gprs\r\n");
|
GPRS_POWER_ON; // 3.8V ʹÄÜÒý½Å
|
GPRS_POWER_EN_H; // ´ò¿ªÎÞÏßÄ£¿éµçÔ´
|
delay_ms(500);
|
IWDT_Clr();
|
Gprs_Open();
|
GPRS_Send_process();
|
}
|
if (GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_15) == 0) // key2 ¶Ï°´½øÈëµÍ¹¦ºÄ
|
{
|
//printf("lower model \r\n");
|
BSTIM_CR1_CEN_Setable(DISABLE);
|
delay_ms(50);
|
LCD_3V3_OFF;
|
GPIO_IPD_Init();
|
Deep_sleep_mode();//Éî¶È˯Ãß
|
}
|
}
|
}
|
|
#define LONG_PRESS_TIME 4000 // ¶Ì°´Ê±¼äãÐÖµ£¬µ¥Î»Îªms
|
#define LONG__LONG_PRESS_TIME 8000 // ³¤°´Ê±¼äãÐÖµ£¬µ¥Î»Îªms
|
#define SHORT_PRESS_TIME 2500
|
#define DOUBLE_CLICK_TIME 500 // Ë«»÷¼ä¸ô500ms
|
|
uint32_t volatile press_start_time = 0;
|
uint32_t volatile press_duration = 0;
|
int button_pressed = 0;
|
int last_button_state = 0;
|
|
int readButton_key1_State(void)
|
{
|
if (GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_9) == 0)
|
{
|
return 1;
|
}
|
else
|
{
|
return 0;
|
}
|
}
|
void project_test_3(void) // SEPICÊä³ö µçÔ´°´¼ü ¶Ì°´£¨12v£© ³¤°´(5v) ³¤³¤°´(9v) key1
|
{
|
button_pressed = readButton_key1_State();
|
if (button_pressed != last_button_state)
|
{
|
delay_ms(5);
|
button_pressed = readButton_key1_State();
|
}
|
if (button_pressed && !last_button_state)
|
{
|
// °´¼ü¸Õ±»°´ÏÂ
|
press_start_time = Sys_GetTick();
|
}
|
else if (!button_pressed && last_button_state)
|
{
|
// °´¼üÊÍ·Å
|
press_duration = Sys_GetTick() - press_start_time;
|
if (press_duration < SHORT_PRESS_TIME) // 12v
|
{
|
if (GPIOH_ReadInputDataBit(GPIO_Pin_0) == 1) // ¼îµç´æÔÚ
|
{
|
OUTPUT1_EN_ON;
|
power12V_ON;
|
BOOST_EN_ON;
|
}
|
|
printf("Short press detected.\n");
|
}
|
else if (press_duration < LONG__LONG_PRESS_TIME && press_duration > LONG_PRESS_TIME) // 5v ??£¿
|
{
|
printf("long press detected.\n");
|
// OUTPUT2_EN_ON;
|
// OUTPUT1_EN_OFF;
|
}
|
else if (press_duration >= LONG__LONG_PRESS_TIME) // 9v
|
{
|
printf("Long long press detected.\n");
|
OUTPUT1_EN_ON;
|
power9V_ON;
|
BOOST_EN_ON;
|
}
|
}
|
IWDT_Clr();
|
last_button_state = button_pressed;
|
}
|
|
void project_test_4(void) // ¿ª¹Ø·§ //VALVE_V
|
{
|
Motor_A_EN_L;
|
// ¡£¡£¡£¹Ø·§
|
Motor_B_EN_H;
|
//...
|
// ¿ª·§
|
}
|
|
void project_test_5(void) // Âö³å ¶ÏÏß¼ì²â
|
{
|
if (GPIOH_ReadInputDataBit(LOWPLUSE_PIN_NUM) == 0) // Âö³å¼ì²â
|
{
|
// low_push_flag = 0;
|
for (int i = 0; i < 3; i++) // led ÂýÉÁ3ÏÂ
|
{
|
|
LED_ON;
|
delay_ms(500);
|
LED_OFF;
|
delay_ms(500);
|
IWDT_Clr();
|
}
|
}
|
if (UNDER_PWR_READ == 0) // ¶ÏÏß¼ì²â
|
{
|
|
UV_LOSE_ON;
|
}
|
else
|
{
|
UV_LOSE_OFF;
|
}
|
if (LOW_PWR_READ == 0)
|
{
|
LV_LOSE_ON;
|
}
|
else
|
{
|
LV_LOSE_OFF;
|
}
|
if (PULSE_LINE_READ == 0)
|
{
|
|
LP_LOSE_ON;
|
}
|
else
|
{
|
LP_LOSE_OFF;
|
}
|
if (ALARM_LINE_READ == 0)
|
{
|
CV_LOSE_ON;
|
}
|
else
|
{
|
CV_LOSE_OFF;
|
}
|
}
|
|
float mcu_temp = 0;
|
void project_test_6(void) // µç³Ø²ÉÑù¼°µôµç´¥·¢
|
{
|
IWDT_Clr();
|
if (Sys_GetTick() - delay_time > 10000)
|
{
|
delay_time = Sys_GetTick();
|
pwr_vol_g.alka_vcc = Get_Alka_Bat_Voltage();
|
pwr_vol_g.lith_vcc = Get_Lith_Bat_Voltage();
|
mcu_temp = Get_Mcu_Temp();
|
printf("alka vcc =%.2f\r\n", pwr_vol_g.alka_vcc);
|
printf("lith vcc = %.2f \r\n", pwr_vol_g.lith_vcc);
|
printf("mcu_temperature %.1f\r\n", mcu_temp);
|
if (GPIOH_ReadInputDataBit(GPIO_Pin_0) == 0)
|
{
|
// alka_lose_flag = 0;
|
printf("alka lose\r\n");
|
}
|
if (GPIOH_ReadInputDataBit(LITH_BAT_LOW_PWR_PIN_NUM) == 0)
|
{
|
// lith_lose_flag = 0;
|
printf("lith lose\r\n");
|
}
|
}
|
}
|
|
void project_test_7(void) // Òº¾§È«ÏÔʾ
|
{
|
LCD_driver_init_new();
|
LCD_Clear_NEW();
|
LCD_All_Display_new();
|
}
|
|
void Project_Test_8(void) // ½èµç
|
{
|
if (EX_PWR_EN_READ == 0)
|
{
|
BORROW_PWR_EN_NUM_L; // PG2 ½èµç
|
for (int i = 0; i < 3; i++) // ¿ìÉÁ3´Î
|
{
|
LED_ON;
|
delay_ms(200); // ÑÓʱ200ms
|
LED_OFF;
|
delay_ms(200);
|
IWDT_Clr();
|
}
|
}
|
if (UNCAP_INT_READ == 1)
|
{
|
for (int i = 0; i < 5; i++) // ¿ìÉÁ5´Î
|
{
|
|
LED_ON;
|
delay_ms(200); // ÑÓʱ200ms
|
LED_OFF;
|
delay_ms(200);
|
IWDT_Clr();
|
}
|
// printf("¿ª¸Ç¼ì²â\r\n");
|
if (GPIO_ReadInputDataBit(GPIOG, GPIO_Pin_7) == 1)
|
{
|
for (int i = 0; i < 6; i++) // ¿ìÉÁ6´Î
|
{
|
|
LED_ON;
|
delay_ms(200); // ÑÓʱ200ms
|
LED_OFF;
|
delay_ms(200);
|
IWDT_Clr();
|
}
|
// printf("¸É»Æ¹Ü¼ì²â\r\n");
|
}
|
}
|
}
|
|
#define TEST_TIME_SECONDS 1000 // ²¶»ñ´ÎÊý
|
#define SYS_CLOCK_HZ 12000000
|
|
void BSTIM_IRQHandler(void)
|
{
|
if (BSTIM_ISR_UIF_Chk() != RESET)
|
{
|
msTicks++;
|
BSTIM_ISR_UIF_Clr();
|
}
|
}
|
|
void project_test_9(void) // ʱÖÓ¾«¶È²âÁ¿
|
{
|
msTicks = 0;
|
uint32_t psc = 1000; // 256;
|
uint32_t arr_value = SYS_CLOCK_HZ / (psc * 1000); // ÒÔ1 msΪһ¸ö¼ÆÊýÖÜÆÚ
|
Timer_Init(psc, arr_value);
|
|
// µÈ´ý²âÊÔʱ¼ä
|
for (uint32_t i = 0; i < TEST_TIME_SECONDS; i++)
|
{
|
delay_ms(1); // ÑÓʱ1ºÁÃë
|
IWDT_Clr();
|
}
|
BSTIM_CR1_CEN_Setable(DISABLE); // ¹Ø±Õ¶¨Ê±Æ÷
|
uint32_t total_ticks = msTicks * arr_value;
|
float measured_frequency = (float)total_ticks * psc;
|
float error_percentage = ((measured_frequency - SYS_CLOCK_HZ) / SYS_CLOCK_HZ) * 100;
|
//printf("Measured Frequency: %.2f Hz\r\n", measured_frequency);
|
//printf("Error Percentage: %.2f%%\r\n", error_percentage);
|
BSTIM_CR1_CEN_Setable(ENABLE);
|
}
|
|
void project_test_10(void) // RTCʱ¼ä»ñÈ¡
|
{
|
|
if (Sys_GetTick() - delay_time1 > 10000)
|
{
|
delay_time1 = Sys_GetTick();
|
// Time_Set(0x24, 06, 04, 02, 0x0E, 0x26, 0x50);
|
Get_Time();
|
IWDT_Clr();
|
}
|
}
|
|
void Uart5_Receive_Data(void)
|
{
|
if (uc_recv_para_g.uc_recv_flag == SET)
|
{
|
IWDT_Clr();
|
printf("MCU<-PC ");
|
for (uint16_t i = 0; i < uc_recv_para_g.uc_recv_length; i++)
|
{
|
printf("0x%02x ", uc_recv_para_g.uc_recv_buf_union.uc_recv_buf[i]);
|
}
|
printf("\r\n");
|
uc_recv_para_g.uc_recv_flag = RESET;
|
}
|
}
|
|
void Rs485_Uart1_Receive_Data(void)
|
{
|
if (rs485_modeule_pagra.rs485_recv_flag == SET)
|
{
|
printf("MCU<-modbus ");
|
for (uint16_t i = 0; i < rs485_modeule_pagra.rs485_recv_length; i++)
|
{
|
IWDT_Clr();
|
printf("0x%02x ", rs485_modeule_pagra.rs485_recv_buf[i]);
|
}
|
printf("\r\n");
|
rs485_modeule_pagra.rs485_recv_flag = RESET;
|
}
|
}
|
|
void Gprs_Uart1_Receive_Data(void)
|
{
|
if (gprs_module_para_g.gprs_recv_flag == SET)
|
{
|
printf("MCU<-Grs ");
|
for (uint16_t i = 0; i < gprs_module_para_g.gprs_recv_length; i++)
|
{
|
printf("0x%02x ", gprs_module_para_g.gprs_recv_buf[i]);
|
}
|
printf("\r\n");
|
gprs_module_para_g.gprs_recv_flag = RESET;
|
}
|
}
|
|
void Rs485_Uart1_Rx_DMA_CH5_Check(void)
|
{
|
uint16_t timeout_cnt = 0, dma_recv_cnt;
|
uint32_t dma_mar_reg_read = DMA_CHxMAR_Read(DMA_CH3);
|
|
if (dma_mar_reg_read != (uint32)rs485_modeule_pagra.rs485_recv_flag)
|
{
|
delay_ms(2);
|
while (dma_mar_reg_read != DMA_CHxMAR_Read(DMA_CH3))
|
{
|
dma_mar_reg_read = DMA_CHxMAR_Read(DMA_CH3);
|
delay_ms(2);
|
if (timeout_cnt++ > 100)
|
break;
|
}
|
}
|
|
dma_recv_cnt = dma_mar_reg_read - (uint32)rs485_modeule_pagra.rs485_recv_buf;
|
if (dma_recv_cnt)
|
{
|
rs485_modeule_pagra.rs485_recv_length = dma_recv_cnt;
|
// ½ÓÊÕRAMµØÖ·ÖØÔØ
|
DMA_ISR_DMACHFT_Clr(DMA_CH3);
|
DMA_CHxCR_ChxEN_Setable(DMA_CH3, DISABLE); // ͨµÀʧÄÜ
|
|
DMA_CHxMAR_Write(DMA_CH3, (uint32)rs485_modeule_pagra.rs485_recv_buf);
|
|
DMA_CHxCR_ChxEN_Setable(DMA_CH3, ENABLE); // ͨµÀʹÄÜ
|
rs485_modeule_pagra.rs485_recv_flag = SET; // ½ÓÊÕÍê³É
|
}
|
}
|
|
uint8_t arr_test[1] = {0x99};
|
uint8_t Rs485_Read_ARR[8] = {0X01, 0X03, 0X0D, 0XAD, 0X00, 0X0E, 0X57, 0X43}; // ¶ÁÈ¡¹¤¿ö×ÜÁ¿¡ªÑ¹Á¦
|
void project_test_11(void) // RS485 UART1 ÊÕ·¢Êý¾Ý
|
{
|
//IR_Uart5_Rx_DMA_CH5_Check();
|
Rs485_Uart1_Rx_DMA_CH5_Check();
|
// Uart5_Receive_Data();
|
Rs485_Uart1_Receive_Data();
|
if (Sys_GetTick() - delay_time2 > 10000)
|
{
|
delay_time2 = Sys_GetTick();
|
// UART5_RE_ON;
|
// RS485_Send_date_uart(arr_test,1);
|
// UART5_RE_OFF;
|
|
OUTPUT1_EN_ON;
|
BOOST_EN_ON;
|
delay(1000); // ·Ç×èÈû
|
EQUIP_RE_ON;
|
delay_ms(5);
|
IWDT_Clr();
|
RS485_Send_date_Equip(Rs485_Read_ARR, sizeof(Rs485_Read_ARR));
|
delay_ms(5);
|
EQUIP_RE_OFF;
|
IWDT_Clr();
|
}
|
}
|
void Project_Test(void)
|
{
|
project_test_1(); // led ÖÜÆÚÉÁ˸
|
project_test_2(); // key3 ÎÞÏßÉÏ·¢ ke2 ¶Ì°´µÍ¹¦ºÄ
|
project_test_3(); // SEPICµçÔ´Êä³ö key1 (°´¼ü²Ù×÷:¶Ì°´12v ³¤°²4s 5V ³¤°² 6s 9v)
|
project_test_5(); // Âö³å ¶ÏÏß¼ì²â
|
project_test_6(); // ²É¼¯µçѹ mcu ÎÂ¶È µôµç¼ì²â
|
Project_Test_8(); // ½èµç²âÊÔ ¿ª¸Ç¼Ó£¨¹âÃ÷µç×裩£¬¸É»Æ¼ì²â
|
project_test_10(); // RTC(ÍⲿʱÖÓ»ñÈ¡)
|
//project_test_11(); // uart5 uart1ͨÐżì²â
|
IWDT_Clr();
|
}
|