你好,CH32V208WBU6基于CH32V20xEVT\EVT\EXAM\BLE\Peripheral_ETH项目增加RTC每秒定时器后,接着调用
tmos_start_task(eth_TaskID, ETH_SENG_DATA_EVENT, 160); 但是无法在uint16_t eth_ProcessEvent(uint8_t task_id, uint16_t events)里收到ETH_SENG_DATA_EVENT这个event.
RTC功能添加方法如下:
1. ch32v20x_it.c里添加
void RTC_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void RTC_IRQHandler(void) --- 此函数是从CH32V20xEVT\EVT\EXAM\RTC\User\ch32v20x_it.c里拷贝的。
{
if (RTC_GetITStatus(RTC_IT_SEC) != RESET) /* Seconds interrupt */
{
RTC_Get();
}
if(RTC_GetITStatus(RTC_IT_ALR)!= RESET) /* Alarm clock interrupt */
{
RTC_ClearITPendingBit(RTC_IT_ALR);
RTC_Get();
}
RTC_ClearITPendingBit(RTC_IT_SEC|RTC_IT_OW);
RTC_WaitForLastTask();
}
2. eth.c里在函数eth_init()里添加
RTC_Init();
3. 在eth的phy link上时调用tmos_start_task(eth_TaskID, ETH_SENG_DATA_EVENT, 160);
if (intstat & GINT_STAT_PHY_CHANGE) //PHY status change
{
i = WCHNET_GetPHYStatus();
if (i & PHY_Linked_Status)
{
printf("PHY Link Success\r\n");
}
tmos_start_task(eth_TaskID, ETH_SENG_DATA_EVENT, 160);
printf("PHY Link Success, send ETH_SENG_DATA_EVENT\r\n");
}