请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:LAUNCHXL-CC2650 Thread 中讨论的其他器件:CC2650
工具/软件:TI-RTOS
您好!
我使用的是 CC2650 LaunchPad 和 cpu.h tirtos lib 中的函数 CPUdelay()。
//
//
//! \brief 提供一个较短的延迟。
//!
//! 此函数提供生成恒定长度延迟的方法。 IT
//! 以汇编语言编写、以使整个工具链的延迟保持一致、
//! 无需根据使用的工具链调整延迟。
//!
//! 循环每循环花费3个周期。
//!
//! \param ui32Count 是要执行的延迟循环迭代次数。
//!
//! \无返回
//
//*********
extern void CPUdelay (uint32_t ui32Count);
//*********
CC2650时钟频率为48MHz、在代码中、它表示循环需要3个周期、因此为了获得微秒延迟、我将传递给函数的参数乘以16。 但是、当我测量示波器中的时序时、我会看到延迟超过1秒。
///------------------------------------------------------- // main()//----------------- void main (void) { hardware_init ();//通过 Xware 初始化硬件 while (1) { PIN_setOutputValue (IOPinHandle、PIN_ID (25)、1);//将 IO25设置为1 CPUdelay(4*16); //创建4usec 延迟- CC26xxWare fxn -每个循环3个周期 PIN_setOutputValue (IOPinHandle、PIN_ID (25)、0);//将 IO25设置为0 } }
//
根据我进行的测量、似乎每个环路实际上是4个周期。 因此、我将传递给函数的参数乘以12、示波器中的时序更改为 usec。
///-------------------------------------------------------
// main()//-----------------
void main (void)
{
hardware_init ();//通过 Xware 初始化硬件
while (1)
{
PIN_setOutputValue (IOPinHandle、PIN_ID (25)、1);//将 IO25设置为1
CPUDELAY (4*12); //创建4usec 延迟- CC26xxWare fxn -每个循环4个周期
PIN_setOutputValue (IOPinHandle、PIN_ID (25)、0);//将 IO25设置为0
}
//BIOS_start(); //启动 BIOS 调度
程序}
有人知道这是为什么??
谢谢!