ch579程序请教
本帖最后由 yidingyaoaini 于 2023-2-3 10:44 编辑请教下面程序有什么问题?
#include "CH57x_common.h"
UINT16 test0_value=0;
void time0_init(void)
{
/*配置定时器0,定时器的时钟是FREQ_SYS*/
TMR0_TimerInit( 1*(FREQ_SYS/1000) ); //定时1ms
TMR0_ITCfg(ENABLE, TMR0_3_IT_CYC_END); //使能定时器周期中断
NVIC_EnableIRQ( TMR0_IRQn );
}
/*TMR0周期中断*/
void TMR0_IRQHandler(void)
{
if( TMR0_GetITFlag( TMR0_3_IT_CYC_END ) )
{
TMR0_ClearITFlag( TMR0_3_IT_CYC_END );
CH57xNET_TimeIsr(CH57xNETTIMEPERIOD); /* 定时器中断服务函数 */
test0_value--;
}
}
int main()
{
UINT8 i = 0;
systick_config();
GpioInit();
DebugUSARTInit(115200); /* 检查错误 */
time0_init( );
test0_value=1000;
while(test0_value!=0)
{
};
PRINT("CH579 TCP client create!\r\n");
while(1)
{
};
}
程序为什么为一直死在while(test0_value!=0)里面?测试在STM32运行是没问题的,在CH579运行不正常。附上2张图片,在while里面加一个PRINT就能正常运行。
我猜测是不是需要有一个小小的延时 就能正常运行 因为中断有优先级 有可能执行完两次中断才会执行while循环从而导致条件判定失败
可以考虑把while循环的判定条件改成一个区间
楼主可以尝试一下 用单步执行 应该是可以实现的
我觉得主要是数据类型的问题
查看一下晶振是否正常工作
页:
[1]