剛剛購買了 307?的開發(fā)板.? 做了一些嘗試.?
下面的代碼比較簡單 ,? 請大家看看為什么 SW_Handler?只執(zhí)行一次 ???
/**********************************?(C)?COPYRIGHT?******************************* *?File?Name??????????:?main.c *?Author?????????????:?WCH *?Version????????????:?V1.0.0 *?Date???????????????:?2021/06/06 *?Description????????:?Main?program?body. *?Copyright?(c)?2021?Nanjing?Qinheng?Microelectronics?Co.,?Ltd. *?SPDX-License-Identifier:?Apache-2.0 *******************************************************************************/ /* ?*@Note ?串口打印調(diào)試?yán)蹋? ?USART1_Tx(PA9)。 ?本例程演示使用?USART1(PA9)?作打印調(diào)試口輸出。 */ #include?"debug.h" __IO?uint32_t?ST_Counter=0; void?SysTick_Handler(void)?__attribute__((interrupt("WCH-Interrupt-fast"))); void?SysTick_Handler(void) { ????SysTick->SR??=?0; ????ST_Counter?++; } __IO?uint32_t?SW_Counter=0; void?SW_Handler() { ??SW_Counter++; ??SysTick->CTLR?&=?~(1?<<?31); } int?gv=0; void?CpuLoopDelay(){ ????for(int?t=0;t<10300000;t++) ????????gv+=123+t*gv; } int?main(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); SysTick->CTLR?=?0x00000000;?????????????//控制寄存器復(fù)位 ????SysTick->SR?=?0x00000000;???????????????//狀態(tài)寄存器復(fù)位 ????SysTick->CNT?=?0x00000000;??????????????//計數(shù)器復(fù)位,設(shè)置初始值為0 ????SysTick->CMP?=?SystemCoreClock?/?8000;???????????????????//給重加載寄存器賦值 ????NVIC_SetPriority(SysTicK_IRQn,?15);?????//設(shè)置SysTick中斷優(yōu)先級 ????NVIC_EnableIRQ(SysTicK_IRQn);???????????//使能開啟Systick中斷 ????NVIC_SetPriority(Software_IRQn,?0xf0); ????NVIC_EnableIRQ(Software_IRQn); ????SysTick->CTLR?|=?0x0000000B;????????????//啟動系統(tǒng)計數(shù)器STK(HCLK/8時基) USART_Printf_Init(115200); printf("SystemClk:%d\r\n",SystemCoreClock); printf("This?is?printf?example\r\n"); while(1) ????{ ????CpuLoopDelay(); ????printf("ST=%d?,?SW=%d?,?CTLR=0x%x?\r\n",ST_Counter,SW_Counter,SysTick->CTLR); ????????SysTick->CTLR?|=?(1?<<?31)?; } }
運(yùn)行的結(jié)果如圖
SysTick_Handler?正常,? ?SW_Handler?執(zhí)行了一次后,? 后面無法再觸發(fā)了.?
熱門產(chǎn)品 :
CH182: 以太網(wǎng)PHY收發(fā)器芯片