OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2907|回复: 7

新人求助,关于usart,输出程序运行的时间

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2020-5-11
在线时间
3 小时
发表于 2020-5-11 10:52:09 | 显示全部楼层 |阅读模式
在usart中应该怎样才能打印出程序运行所需要的时间,比如说 发送5000个‘P’所需要的时间,应该怎么写
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2020-5-2
在线时间
0 小时
发表于 2020-5-11 11:24:21 | 显示全部楼层
不懂,只能认认真真跟着原子哥学习先,帮顶
回复 支持 反对

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-5-11 11:47:49 | 显示全部楼层
用管脚电平输出示波器看吧这个测量时间最准了,要么用定时器计时
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2020-5-11
在线时间
3 小时
 楼主| 发表于 2020-5-11 14:57:50 | 显示全部楼层
对,要用系统嘀嗒定时器,但是嘀嗒定时器应该怎样计数不太会
回复 支持 反对

使用道具 举报

9

主题

219

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1431
金钱
1431
注册时间
2020-5-12
在线时间
393 小时
发表于 2020-5-12 11:38:12 | 显示全部楼层
使用一个定时器实现1ms定时,然后在定义一个函数用于启动或者关闭定时器,最后定义一个int全局变量,放在定时器中断函数里面自加。使用方法就是在你需要算计时的地方,开启定时器,int变量置0。计时结束的地方,关闭定时器,这个时候int变量就是你需要的计时时间。
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2020-5-11
在线时间
3 小时
 楼主| 发表于 2020-5-12 11:48:00 | 显示全部楼层
叶子君 发表于 2020-5-12 11:38
使用一个定时器实现1ms定时,然后在定义一个函数用于启动或者关闭定时器,最后定义一个int全局变量,放在定 ...

具体应该怎样去写,不太会写,能不能分享一段代码
回复 支持 反对

使用道具 举报

9

主题

219

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1431
金钱
1431
注册时间
2020-5-12
在线时间
393 小时
发表于 2020-5-12 13:46:14 | 显示全部楼层
本帖最后由 叶子君 于 2020-5-12 13:52 编辑

#include "stm32f0xx.h"
static int Time_cnt = 0;
/*****************************************************************************************
功    能 : NVIC配置
参    数 : 无
返 回 值 : 无
*****************************************************************************************/
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM14_IRQn; //定时器14中断
NVIC_InitStructure.NVIC_IRQChannelPriority = 2;  //优先级2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
//****************************************************************************************
//功能:TIM14初始化
//入参:arr:自动重装寄存器周期的值
//      psc:预分频值
//   溢出时间计算 Tout=((arr+1)*(psc+1))/Tclk (us)
//返回:无
//****************************************************************************************
void TIM14_Int_Init(u16 arr, u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM14, ENABLE);  //开启TIM14时钟
TIM_TimeBaseStructure.TIM_Period=arr;                     //设置自动重装寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler=psc;                  //设置时钟频率除数的预分频值
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;     //设置时钟分割
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //TIM向上计数
TIM_TimeBaseInit(TIM14,&TIM_TimeBaseStructure);           //初始化TIM14
TIM_ITConfig(TIM14,TIM_IT_Update,ENABLE);                 //允许更新中断
              
}
//****************************************************************************************
//功能:设置TIM14的开关
//入参:sta: 0关闭;
//     1开启;
//返回:无
//****************************************************************************************
void TIM14_Set(u8 sta)
{
if(sta)
{   
  TIM_SetCounter(TIM14,0);//计数器清空
  TIM_Cmd(TIM14, ENABLE);  //使能TIM14
}
else
  TIM_Cmd(TIM14, DISABLE);//关闭定时器14   
}
/*****************************************************************************************
功    能 : 定时器14中断函数
参    数 : 无
返 回 值 : 无
*****************************************************************************************/
void TIM14_IRQHandler(void)
{
if(TIM_GetITStatus(TIM14,TIM_IT_Update)!=RESET)  
{
  Time_cnt++;
  TIM_ClearITPendingBit(TIM14,TIM_IT_Update);
}
}

//****************************************************************************************
//功能:开始计时
//入参:无
//返回:无
//****************************************************************************************
void start_time(void)
{
Time_cnt = 0;
TIM14_Set(1);
}
//****************************************************************************************
//功能:结束计时
//入参:无
//返回:耗时
//****************************************************************************************
int end_time(void)
{
  TIM14_Set(0);
return Time_cnt ;
}


回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2020-5-11
在线时间
3 小时
 楼主| 发表于 2020-5-12 14:38:05 | 显示全部楼层
叶子君 发表于 2020-5-12 13:46
#include "stm32f0xx.h"
static int Time_cnt = 0;
/************************************************* ...

这是TIM啊,目前还没学过TIM,只学过嘀嗒定时器,要好好研究一下了,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-29 18:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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