你好,CH32V208WBU6基于CH32V20xEVT\EVT\EXAM\BLE\Peripheral_ETH項目增加RTC每秒定時器后,接著調(diào)用
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)? --- 此函數(shù)是從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里在函數(shù)eth_init()里添加
RTC_Init();
3. 在eth的phy link上時調(diào)用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");
? ? }