标题:
STM32串口定时发送数据程序
[打印本页]
作者:
乐观的知觉
时间:
2018-11-26 16:41
标题:
STM32串口定时发送数据程序
单片机源程序如下:
/**
******************************************************************************
* @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 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
sklahdfj
时间:
2019-11-27 19:47
真棒 厉害 棒棒
作者:
bjfxxc
时间:
2020-4-17 12:44
好东西,谢谢分享。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1