W80X_学习

10 篇文章 0 订阅
7 篇文章 0 订阅

本文使用环境:
主控:W801 (开发板)
兼容:W800 AIR101

一、概述

这篇文章主要记录FreeRtos学习过程中遇到的问题,供自己学习。本着遇到问题解决问题的态度,第二章将会就问题解决问题。

二、问题

1、延时问题-不清楚延时时长。
W801的SDK中官方给的延时函数为:

tls_os_time_delay(5000/HZ);
.
const unsigned int HZ = configTICK_RATE_HZ;
.
void tls_os_time_delay(u32 ticks)
{
	vTaskDelay(ticks);
}
//其中HZ为:
#define configTICK_RATE_HZ			( ( portTickType ) 500u )	//时间片中断的频率

算一下延时是如何来的。
首先看一下Rtos的时钟配置文件:FreeRTOSconfig.h,只看时钟相关

#define configCPU_CLOCK_HZ			( ( unsigned long ) 40000000 )	/* =12.0MHz xtal multiplied by 5 using the PLL. *///内部处理器执行频率
#define configTICK_RATE_HZ			( ( portTickType ) 500u )	//时间片中断的频率

上述代码中:
configCPU_CLOCK_HZ 表示时钟频率,
configTICK_RATE_HZ 表示规定的tick周期,表示每秒钟多少个滴答(tick),将一秒钟分解为500个滴答,每一个滴答就是2ms。
一个tick的时间计算如下:

time_tick = configCPU_CLOCK_HZ/configTICK_RATE_HZ/configCPU_CLOCK_HZ;

例如:
40000000/500/40M = 2000us = 2ms

因此这里将configTICK_RATE_HZ改为1000u

#define configTICK_RATE_HZ			( ( portTickType ) 500u )	//时间片中断的频率

time_tick = 40000000/1000/40M = 10000us = 1ms
这样一个tick就是1ms,这里的1ms并不是标准的1ms,但是大概差不多。

2、806裸机版本的US延时

#include "wm_hal.h"
#include "assert.h"


//一条nop等于  1/(freq(Mhz)/12)us
//240/160 MHZ下  3个nop就是20ns

//160MZH  48个nop就是1us
//240Mhz  80个nop就是1us
//可以实现870us以下的延时,多了的 就不要用了。不准。
//5u以下的延时会存在误差 注意。
static void Delay_Us(uint8_t freq,uint32_t time)
{
	uint32_t i;
	uint16_t num = 90;
	if(time > 1000)
	{
		printf("delay time is too lager than 1000, please use HAL_Delay()\r\n");
	}
	switch(freq)
	{
		case 240: num = 80;break;
		case 160: num = 53;break;
		default: printf("delay input freq err...default set 240MHZ us time \r\n ");break;
	}
	
	for (i = 0; i < (num)*time; i++)
	{
		__NOP();
	}
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr·赵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值