工具/软件:Code Composer Studio
尊敬的所有人:
我注意到,在启动 SysTick 后,当我们实施 SysTick _GetValue()时,它将返回计数值而不是时间值。 我现在正在尝试找到一种方法将计数值转换为时间值、因为我的团队的设计要求时钟运行36MHz、这意味着时钟每27.78ns 计时一次。 假设我创建一个名为 count 的整数、然后每次时钟节拍时、该计数都会增加1。 例如、当时钟周期为300次(相当于8.334us)时、我的计数值将变为300? 我还想使用 GPIO 作为输入、每次输入为高电平时、我都可以将当前计数值附加到空矢量中。 然后在2.65ms (计数= 95392)后、输入将被禁用、无论输入是否为高电平、整个操作都将被关闭。
现在、我只大致了解了如何执行该操作:
/*代码开始*/
int 计数= 0;
int main (void){
MAP_WDT_A_HOLDTimer();
MAP_GPIO_setAsInputPinWithPullUpResistor (GPIO_PORT_P1、GPIO_PIN1);
MAP_GPIO_interruptEdgeSelect (PIO_PORT_P1、GPIO_PIN1、GPIO_HIGH_TO_LOW_TRANSITION);
MAP_GPIO_clearInterruptFlag (GPIO_PORT_P1、GPIO_PIN1);
map_fpu_enableModule();
MAP_CS_setDCOFrequency (36000000);
MAP_PCM_setCoreVoltageLevel (PCM_VCORE1);
MAP_FlashCtl_setWaitState (FLASH_BANK0、1);
MAP_FlashCtl_setWaitState (FLASH_BANK1、1);
MAP_SysTK_enableModule();
MAP_SysTK_setPeriod (1);
MAP_SysTK_enableInterrupt ();
MAP_Interrupt_enableMaster();
while (计数<=95392)
{
if (/*PIN1.1 high*/)
/*array 追加当前计数值*/
}
}
}
void SysTick 处理程序(void){
count++;
}
这是一种好方法吗? 我不想只是在板上尝试它、因为我在高频运行时钟时犯了很多错误、MCU 就被骗了、我不得不另外购买一个。