关于GOKIT2的二次开发----定时开关功能的问题
本人是一名新手开发者,拿到GOKIT2的开发板后向论坛里的前辈们学习了下二次开发。目前已经实现了控制A1口输出高低电平。现在想要学习定时开关功能。在搜索诸多资料后,决定使用定时器中断来实现。但结果却发现延时功能并未成功,让我很是苦恼。 具体情况如下:先发上具体部分代码,见图片。简单说明下:我设置了一个开关数据点,在开事件中初始化定时器4并启动,定时器4的时间目前设置为一常数用于测试。并把开灯函数放入定时器4的中断函数中。
测试结果:点击手机APP的“开”按键,测试的LED灯立即发光,没有任何延时。
提问:1.我测试了多个定时器,发现除了被GOKIT已经使用的定时器3,只有定时器4可以使用,对于GOKIT2板子,哪些定时器可以使用,哪些定时器已被占用了?
2.在程序中,我只把LED开的程序放在定时器4的中断函数中,测试结果说明程序进入了定时器4的中断函数,但却没有任何延时,这是为什么?
3.大神们还有什么其他思路来实现定时开关吗?
感谢各位的浏览和解答!!
1.gokit使用的是STM32F103C8T6,共有4个定时器TIM1~TIM4,生成的代码包使用了定时器2和定时器3
2.在收到0x01改为启动定时器试试
3.延时使用gizGetTimerCount,代码参考微信宠物屋的
void userHandle(void)
{
uint8_t ret= 0;
static uint32_t thLastTimer = 0;
currentDataPoint.valueInfrared = irHandle();
if((gizGetTimerCount()-thLastTimer) > SAMPLING_TIME_MAX)
{
ret = dht11Read((uint8_t *)¤tDataPoint.valueTemperature, (uint8_t *)¤tDataPoint.valueHumidity);
if(ret != 0)
{
printf("Failed to read DHT11\r\n");
}
thLastTimer = gizGetTimerCount();
}
}
bigfanofloT 发表于 2017-11-19 17:11
1.gokit使用的是STM32F103C8T6,共有4个定时器TIM1~TIM4,生成的代码包使用了定时器2和定时器3
2.在收到0x0 ...
非常非常感谢大神的解答,已经解决了我的问题。
原来是我的代码忘记使能定时器了,现在看来也是挺蠢的哈哈。:lol 现在把改正后的代码发一下吧,也给做定时功能的小伙伴做个参考。
Garfieldang 发表于 2017-11-19 19:04
现在把改正后的代码发一下吧,也给做定时功能的小伙伴做个参考。
大佬,有工程文件吗 最近正在实现智能插座 卡在定时功能这里了方便分享学习一下吗感激不尽
页:
[1]