找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5126|回复: 2
收起左侧

STM32串口定时发送数据程序

[复制链接]
ID:391361 发表于 2018-11-26 16:41 | 显示全部楼层 |阅读模式
单片机源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  程序小菜鸟
  5.   * @version V1.0
  6.   * @date    2018-09-xx
  7.   * @brief   WF-ESP8266 WiFi模块测试
  8.   ******************************************************************************
  9.   *
  10.   * @HP
  11.   * 实验平台: STM32 开发板
  12.   * 公司    : QLKM
  13.   *
  14.   ******************************************************************************
  15.   */
  16. #include "sys.h"
  17. #include "delay.h"
  18. #include "usart.h"
  19. #include "time.h"
  20. #include "led.h"

  21. /**
  22.   * @brief  主函数
  23.   * @param  无
  24.   * @retval 无
  25.   */
  26. u32 ARPTimer=0;                        //ARP查询计时器
  27. u32 localtime;                //本地时间计数器,单位:ms   32位,这样计数可以计数49天(产品周期)
  28. u16 localtime1;                //本地时间计数器,单位:ms   16位,这样计数只可以计数65s,在变量超出取值范围前将变量重新赋初值,就可以连续计数
  29. u16 ARPTimer1=0;                        //ARP查询计时器
  30. #define INTERVALS 5000 //时间间隔
  31. #define INTERVALS1 5000 //时间间隔
  32. u32 i=0,j=0;
  33. int main(void)                        
  34. {
  35.         /* 初始化 */
  36.         delay_init();                    //延时函数初始化          
  37.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  38.         usart_init(115200);
  39.         LED_Init();
  40.         TIM3_Int_Init(1000-1,720-1);
  41.         //ARP每5s周期性调用一次
  42.         while(1)
  43.         {
  44.                 if (localtime>=4294965000)//不加这一句,当localtime>2^32-1=4294967296时,函数调用就会失效
  45.                 {
  46.                         localtime=0;
  47.                         ARPTimer=0;
  48.                 }
  49.                 if ((localtime - ARPTimer) >= INTERVALS)
  50.                 {
  51.                         j++;
  52.                         LED0 =!LED0;
  53.                         i=(localtime - ARPTimer)/1000;
  54.                         u1_printf("ARPTimer:%d\r\n",ARPTimer);
  55.                         ARPTimer =  localtime;                       
  56.                         u1_printf("localtime:%d\r\n",localtime);                       
  57.                         u1_printf("time:%ds\r\n",i*j);
  58.                 }
  59.                 if (localtime1>=65000)//不加这一句,当localtime1>2^16-1=65535时,函数调用就会失效
  60.                 {
  61.                         localtime1=0;
  62.                         ARPTimer1=0;
  63.                 }
  64.                 if ((localtime1 - ARPTimer1) >= INTERVALS1)
  65.                 {
  66.                   LED1 =!LED1;
  67.                         i=(localtime1 - ARPTimer1)/1000;
  68.                         u1_printf("u16 ARPTimer1:%d\r\n",ARPTimer1);
  69.                         ARPTimer1 =  localtime1;                       
  70.                         u1_printf("u16 localtime1:%d\r\n",localtime1);                       
  71.                         u1_printf("i:%ds\r\n",i);
  72.                 }
  73.         }
  74. }       
复制代码

所有资料51hei提供下载:
定时发送.7z (247.83 KB, 下载次数: 65)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:631876 发表于 2019-11-27 19:47 | 显示全部楼层
真棒  厉害  棒棒
回复

使用道具 举报

ID:75468 发表于 2020-4-17 12:44 | 显示全部楼层
好东西,谢谢分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表