單片機源程序如下:
- /**
- ******************************************************************************
- * @file main.c
- * @author 程序小菜鳥
- * @version V1.0
- * @date 2018-09-xx
- * @brief WF-ESP8266 WiFi模塊測試
- ******************************************************************************
- *
- * @HP
- * 實驗平臺: STM32 開發板
- * 公司 : QLKM
- *
- ******************************************************************************
- */
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "time.h"
- #include "led.h"
- /**
- * @brief 主函數
- * @param 無
- * @retval 無
- */
- u32 ARPTimer=0; //ARP查詢計時器
- u32 localtime; //本地時間計數器,單位:ms 32位,這樣計數可以計數49天(產品周期)
- u16 localtime1; //本地時間計數器,單位:ms 16位,這樣計數只可以計數65s,在變量超出取值范圍前將變量重新賦初值,就可以連續計數
- u16 ARPTimer1=0; //ARP查詢計時器
- #define INTERVALS 5000 //時間間隔
- #define INTERVALS1 5000 //時間間隔
- u32 i=0,j=0;
- int main(void)
- {
- /* 初始化 */
- delay_init(); //延時函數初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
- usart_init(115200);
- LED_Init();
- TIM3_Int_Init(1000-1,720-1);
- //ARP每5s周期性調用一次
- while(1)
- {
- if (localtime>=4294965000)//不加這一句,當localtime>2^32-1=4294967296時,函數調用就會失效
- {
- localtime=0;
- ARPTimer=0;
- }
- if ((localtime - ARPTimer) >= INTERVALS)
- {
- j++;
- LED0 =!LED0;
- i=(localtime - ARPTimer)/1000;
- u1_printf("ARPTimer:%d\r\n",ARPTimer);
- ARPTimer = localtime;
- u1_printf("localtime:%d\r\n",localtime);
- u1_printf("time:%ds\r\n",i*j);
- }
- if (localtime1>=65000)//不加這一句,當localtime1>2^16-1=65535時,函數調用就會失效
- {
- localtime1=0;
- ARPTimer1=0;
- }
- if ((localtime1 - ARPTimer1) >= INTERVALS1)
- {
- LED1 =!LED1;
- i=(localtime1 - ARPTimer1)/1000;
- u1_printf("u16 ARPTimer1:%d\r\n",ARPTimer1);
- ARPTimer1 = localtime1;
- u1_printf("u16 localtime1:%d\r\n",localtime1);
- u1_printf("i:%ds\r\n",i);
- }
- }
- }
復制代碼
所有資料51hei提供下載:
定時發送.7z
(247.83 KB, 下載次數: 66)
2018-11-26 16:40 上傳
點擊文件名下載附件
|