CH573:在中断中翻IO,用示波器和逻辑分析仪抓取,间隔是500ms。
int main() { SetSysClock(CLK_SOURCE_PLL_60MHz); DebugInit(); PRINT("Start @ChipID=%02X\n", R8_CHIP_ID); GPIOB_SetBits(GPIO_Pin_22); GPIOB_ModeCfg(GPIO_Pin_22, GPIO_ModeOut_PP_5mA); SysTick_Config(FREQ_SYS/2); while(1); } __attribute__((interrupt("WCH-Interrupt-fast"))) __attribute__((section(".highcode"))) void SysTick_Handler() { GPIOB_InverseBits(GPIO_Pin_22); SysTick->CNTFG &= ~(1<<1); //清除中断标志 }
CH582:在中断中翻IO,用示波器和逻辑分析仪抓取,间隔是500ms。
int main( { SetSysClock(CLK_SOURCE_PLL_60MHz); DebugInit(); PRINT("Start @ChipID=%02X\n", R8_CHIP_ID); GPIOB_SetBits(GPIO_Pin_22); GPIOB_ModeCfg(GPIO_Pin_22, GPIO_ModeOut_PP_5mA); SysTick_Config(FREQ_SYS/2); while(1); } __INTERRUPT __HIGH_CODE void SysTick_Handler() { GPIOB_InverseBits(GPIO_Pin_22); SysTick->SR = 0; //清除中断标志 }
CH592:在中断中翻IO,用示波器和逻辑分析仪抓取,间隔是500ms。
int main() { SetSysClock(CLK_SOURCE_PLL_60MHz); DebugInit(); PRINT("Start @ChipID=%02X\n", R8_CHIP_ID); GPIOB_SetBits(GPIO_Pin_22); GPIOB_ModeCfg(GPIO_Pin_22, GPIO_ModeOut_PP_5mA); SysTick_Config(FREQ_SYS/2); while(1); } __INTERRUPT __HIGH_CODE void SysTick_Handler() { GPIOB_InverseBits(GPIO_Pin_22); SysTick->SR = 0; //清除中断标志 }
CH579:ARM cortex M0 的 systick 是一个24bit的,以主频为单位向下的计数器(0xFFFFFF即十进制16777215)
int main()
{
DebugInit();
PRINT( "Start @ChipID=%02X\n", R8_CHIP_ID );
GPIOB_SetBits(GPIO_Pin_22);
GPIOB_ModeCfg(GPIO_Pin_22, GPIO_ModeOut_PP_5mA);
SysTick_Config(FREQ_SYS/2);
NVIC_EnableIRQ(SysTick_IRQn);
while(1);
}
void SysTick_Handler()
{
GPIOB_InverseBits(GPIO_Pin_22);
}
END...