使用RTT4.10 硬件为STM32F429IGT6。
使用官方例程硬件。
定时器修改定时器超时值,计数频率改为1m,定时器为tim14
#define HWTIMER_DEV_NAME “timer14” /* 定时器名称 */
rt_uint32_t freq = 1000000; /* 计数频率 */
/* 设置定时器超时值为5s并启动定时器 */
timeout_s.sec = 0; /* 秒 */
timeout_s.usec = 1; /* 微秒 */
/**
* [url=home.php?mod=space&uid=2666770]@Brief[/url] 定时器超时回调函数
* [url=home.php?mod=space&uid=3142012]@param[/url] None
* @retval None
* [url=home.php?mod=space&uid=1902110]@NOTE[/url] None
*/
static rt_err_t timeout_cb(rt_device_t dev, rt_size_t size)
{
HAL_GPIO_TogglePin(DEBUG_GPIO_Port,DEBUG_Pin);
return 0;
}
回调函数中翻转电平并使用逻辑分析仪查看波形没有,debug仿真查看没有进入回调函数中。
调整为3us,得到波形。
问一下这是为什么?是RTT系统的问题,还是硬件不支持
另外,调整时间为5us。开了多个线程,会导致5us定时器有时候会卡顿,到30us左右。
是不是因为切换上下文会关闭总中断的缘故?
我这样使用定时器回调函数中进行S型加减速控制电机。使用主从定时器控制脉冲个数。
读取脉冲个数没问题。但是发送脉冲个数偶尔会有偏差。原因就是us级定时器被打断了!!11
更多回帖