-
GD32F303问题
问题背景是这样的:配置了一个20Khz的定时器溢出中断,System_cnt_add()函数是对一个变量++,就是创建了一个时间基准。然后在Task_time_slice_function()函数里面实现了一个led每0.5s翻转的任务。于是遇到了这样一个问题:当我把这个Task_time_slice_function()函数放在中断的时候,led能够正常实现每0.5s翻转的操作,也就是输出一个1Hz的方波。但是当我把Task_time_slice_function()函数放在main函数的while循环里面时,功能就失效了,变成输出32Hz的方波。有没有人知道怎么回事,希望能指点一下,谢谢!这是用到的几个函数intmain(void){Systemclock_config();nvic_config();gpio_config();spi2_config();timer_config();System_cnt_init();while(1){Task_time_slice_function();}}/*time020kHz*/voidTIMER0_UP_IRQHandler(void){if(SET==timer_interrupt_flag_get(TIMER0,TIMER_INT_UP)){timer_interrupt_flag_clear(TIMER0,TIMER_INT_FLAG_UP);System_cnt_add();}}voidTask_time_slice_function(void){/*1ms*/if(_abs(systemclock_data.systemclock_cnt-systemclock_data.systemclock_lastcnt_1ms)>=systemclock_data.systemclock_cnt_1ms){systemclock_data.systemclock_lastcnt_1ms=systemclock_data.systemclock_cnt;led_main();}/*10ms*/if(_abs(systemclock_data.systemclock_cnt-systemclock_data.systemclock_lastcnt_10ms)>=systemclock_data.systemclock_cnt_10ms){systemclock_data.systemclock_lastcnt_10ms=systemclock_data.systemclock_cnt;}/*100ms*/if(_abs(systemclock_data.systemclock_cnt-systemclock_data.systemclock_lastcnt_100ms)>=systemclock_data.systemclock_cnt_100ms){systemclock_data.systemclock_lastcnt_100ms=systemclock_data.systemclock_cnt;}/*1000ms*/if(_abs(systemclock_data.systemclock_cnt-systemclock_data.systemclock_lastcnt_1000ms)>=systemclock_data.systemclo
2023-12-02 3 -
GD32F303问题
问题背景是这样的:配置了一个20Khz的定时器溢出中断,System_cnt_add()函数是对一个变量++,就是创建了一个时间基准。然后在Task_time_slice_function()函数里面实现了一个led每0.5s翻转的任务。于是遇到了这样一个问题:当我把这个Task_time_slice_function()函数放在中断的时候,led能够正常实现每0.5s翻转的操作,也就是输出一个1Hz的方波。但是当我把Task_time_slice_function()函数放在main函数的while循环里面时,功能就失效了,变成输出32Hz的方波。有没有人知道怎么回事,希望能指点一下,谢谢!
2023-12-02 1