我发现了用于创建软件触发器的功能,用于当前测量电路开发工具包
void arch_set_pxact_gpio(GPIO_PORT端口,GPIO_PIN引脚)
是有缺陷的。
以下是原始代码:
**********
uint32_t我;
uint32_t data_reg = GPIO_BASE + (port << 5);
Uint32_t mode_reg = data_reg + 0x6 +(引脚<< 1);
Uint32_t set_data_reg = data_reg + 2;
Uint32_t reset_data_reg = data_reg + 4;
SetWord16(mode_reg, PID_GPIO | OUTPUT);
SetWord16(set_data_reg, 1 << pin);
For (i = 0;我< 190;我+ +);//190几乎是47秒的时间。* * * *的* * *
SetWord16(reset_data_reg, 1 << pin);
***********
注意,线路应该产生47us的延迟。如果在编译过程中打开了优化,这是OPTIMISED AWAY,这意味着脉冲太短,无法触发当前测量游标。我建议对代码进行以下更改(测试后生效)。
*****************
uint32_t我;
uint32_t data_reg = GPIO_BASE + (port << 5);
Uint32_t mode_reg = data_reg + 0x6 +(引脚<< 1);
Uint32_t set_data_reg = data_reg + 2;
Uint32_t reset_data_reg = data_reg + 4;
SetWord16(mode_reg, PID_GPIO | OUTPUT);
SetWord16(set_data_reg, 1 << pin);
For (i = 0;我< 150;我+ +)
{
//我添加了NOP指令,并调整了循环计数
//得到47 us,这似乎是他们的目标。
//使用Gcc优化大小
__NOP ();
}
SetWord16(reset_data_reg, 1 << pin);
*********************
我发布这篇文章,以防它对其他人有用。
谢谢你!
嗨Melj,
非常感谢您的宝贵反馈,我们会尽快进行评估。
Br,
PW_Dialog