void app_clk_init() { RCC_ClocksTypeDef RCC_Clocks; //RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMULL6);//12M*6 //这版混进了一个16M的晶振进去,搞得只能用这个参数了 RCC_PLLConfig (RCC_PLLSource_HSE_Div2, RCC_PLLMULL9); //12M*6 RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);//72/1.5 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //sysclock 72M RCC_HCLKConfig(RCC_SYSCLK_Div1); //main clock 72M RCC_HSEConfig(RCC_HSE_ON); while(RCC_WaitForHSEStartUp() == NoREADY); while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); RCC_PLLCmd(ENABLE); RCC_PCLK1Config(RCC_HCLK_Div1); //72M RCC_PCLK2Config(RCC_HCLK_Div1); //72M RCC_ADCCLKConfig(RCC_PCLK2_Div2); //36M RCC_ClockSecuritySystemCmd(ENABLE); // RCC_GetClocksFreq(&RCC_Clocks); } /********************************************************************* * @fn main * * @brief Main program. * * @return none */ int main(void) { GPIO_InitTypeDef GPIO_InitStruct; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // SystemInit(); // SystemCoreClockUpdate(); app_clk_init(); // Delay_Init(); // USBHD_RCC_Init( ); // USBHD_Device_Init( ENABLE ); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOC, &GPIO_InitStruct); // xTaskCreate((TaskFunction_t )task2_task, // (const char* )"task2", // (uint16_t )TASK2_STK_SIZE, // (void* )NULL, // (UBaseType_t )TASK2_TASK_PRIO, // (TaskHandle_t* )&Task2Task_Handler); // // xTaskCreate((TaskFunction_t )task1_task, // (const char* )"task1", // (uint16_t )TASK1_STK_SIZE, // (void* )NULL, // (UBaseType_t )TASK1_TASK_PRIO, // (TaskHandle_t* )&Task1Task_Handler); // vTaskStartScheduler(); // USART_Printf_Init(115200); // printf("SystemClk:%d\r\n", SystemCoreClock); // printf("This is printf example\r\n"); while(1) { // GPIO_ResetBits(GPIOC, GPIO_Pin_9); // Delay_Ms(1000); GPIO_SetBits(GPIOC, GPIO_Pin_9); // Delay_Ms(1000); } }
这是初始代码,启动文件内的
li t0, 0x88
csrs mstatus, t0
中断与官方给的参数一致。
目前遇到的问题是仅能在调试过程中运行,一旦停止gdb,似乎芯片会立刻挂起,导致卡住。直接供电也是如此。
电路为最小系统,由立创商城基础修改而来
目前暂时使用主时钟16MHZ并且修改了ch32库文件的HSE_VALUE的参数
已经完成的前期排查:
去除了代码中几乎所有的冗余项。关闭了printf。
关闭了代码的优化,完成最基础的高低电平。
去掉了R2、R10电阻并且短接当前的 电路。
测量R4,上电后依然为3.3V
目前遇到现象:
在接入电源后,电源指示灯亮起,但是运行指示灯无反应。
使用调试器上电,电源指示灯亮起,但是运行指示灯无反应
使用调试器调试,运行时电源指示灯常量,可以正常运行调试,并且指示灯正常反应
停止调试器的gdb进程,运行指示灯立刻熄灭(正常代码应为长亮)。
使用调试器发送“运行”策略,可以正常运行,但是断掉调试器与上文一致。
初次试水,还请各位帮忙指点一二