手机网站需要什么,宣传片拍摄方案范本,中国神鹰网站建设,如何用网站做淘宝联盟1. 我用的是STM32L151C8T6 的芯片#xff0c;在github 上找了个别人的例程#xff0c;拿来当模板改#xff0c;由于他用的是HSE 外部晶振#xff0c;我用的是内部晶振HSI#xff0c;所以需要改系统时钟#xff0c;改完后debug#xff0c; 一直进不了main 函数#xff0…1. 我用的是STM32L151C8T6 的芯片在github 上找了个别人的例程拿来当模板改由于他用的是HSE 外部晶振我用的是内部晶振HSI所以需要改系统时钟改完后debug 一直进不了main 函数老以为是我改系统时钟改错了, 搞半天才找到原因是printf 和微库 Use MicroLIB 的问题keil 里面勾选就可以了 2. 改写系统初始化函数 void SetSysClock(void) 关闭HSE 使用HSI
void SetSysClock(void)
{__IO uint32_t StartUpCounter 0;__IO uint32_t HSEStatus 0;__IO uint32_t HSIStartUpCounter 0;__IO uint32_t HSIStatus 0;/* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/
// RCC-CR | ((uint32_t)RCC_CR_HSEON); // Enable HSE
// /* Wait till HSE is ready and if Time out is reached exit */do
// {
// HSEStatus RCC-CR RCC_CR_HSERDY;
// StartUpCounter;
// } while ((HSEStatus 0) (StartUpCounter ! HSE_STARTUP_TIMEOUT));
// if ((RCC-CR RCC_CR_HSERDY) ! RESET)
// {
// HSEStatus (uint32_t)0x01;
// }
// else
// {
// HSEStatus (uint32_t)0x00;
// }
// if (HSEStatus (uint32_t)0x01)
// {
// FLASH-ACR | FLASH_ACR_ACC64; // Enable 64-bit access
// FLASH-ACR | FLASH_ACR_PRFTEN; // Enable Prefetch Buffer
// FLASH-ACR | FLASH_ACR_LATENCY; // Flash 1 wait state
// RCC-APB1ENR | RCC_APB1ENR_PWREN; // Power enable
// PWR-CR PWR_CR_VOS_0; // Select the Voltage Range 1 (1.8 V)
// while((PWR-CSR PWR_CSR_VOSF) ! RESET) // Wait Until the Voltage Regulator is ready
// {
// }
// RCC-CFGR | (uint32_t)RCC_CFGR_HPRE_DIV1; // HCLK SYSCLK /1
// RCC-CFGR | (uint32_t)RCC_CFGR_PPRE2_DIV1; // PCLK2 HCLK /1
// RCC-CFGR | (uint32_t)RCC_CFGR_PPRE1_DIV1; // PCLK1 HCLK /1
// /* PLL configuration */
// RCC-CFGR (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMUL | RCC_CFGR_PLLDIV));
// RCC-CFGR | (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMUL12 | RCC_CFGR_PLLDIV3);
// RCC-CR | RCC_CR_PLLON; // Enable PLL
// while((RCC-CR RCC_CR_PLLRDY) 0) // Wait till PLL is ready
// {
// }
// /* Select PLL as system clock source */
// RCC-CFGR (uint32_t)((uint32_t)~(RCC_CFGR_SW));
// RCC-CFGR | (uint32_t)RCC_CFGR_SW_PLL;
// while ((RCC-CFGR (uint32_t)RCC_CFGR_SWS) ! (uint32_t)RCC_CFGR_SWS_PLL) // Wait till PLL is used as system clock source
// {
// }
// }
// else // HSE startup fail, then use HSI as system clock source
// {RCC-CR | RCC_CR_HSION; // enable HSI as system clock sourcedo{HSIStatus RCC-CR RCC_CR_HSIRDY;HSIStartUpCounter;} while ((HSIStatus 0) (HSIStartUpCounter ! HSI_STARTUP_TIMEOUT)); // Wait till HSI is ready and if Time out is reached exitif ((RCC-CR RCC_CR_HSIRDY) ! RESET){HSIStatus (uint32_t)0x01;}else{HSIStatus (uint32_t)0x00;}if (HSIStatus (uint32_t)0x01){FLASH-ACR | FLASH_ACR_ACC64; // Enable 64-bit accessFLASH-ACR | FLASH_ACR_PRFTEN; // Enable Prefetch BufferFLASH-ACR | FLASH_ACR_LATENCY; // Flash 1 wait stateRCC-APB1ENR | RCC_APB1ENR_PWREN; // Power enablePWR-CR PWR_CR_VOS_0; // Select the Voltage Range 1 (1.8 V)while((PWR-CSR PWR_CSR_VOSF) ! RESET) // Wait Until the Voltage Regulator is ready{}RCC-CFGR | (uint32_t)RCC_CFGR_HPRE_DIV1; // HCLK SYSCLK /1RCC-CFGR | (uint32_t)RCC_CFGR_PPRE2_DIV1; // PCLK2 HCLK /1RCC-CFGR | (uint32_t)RCC_CFGR_PPRE1_DIV1; // PCLK1 HCLK /1/* PLL configuration */RCC-CFGR (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMUL | RCC_CFGR_PLLDIV));RCC-CFGR | (uint32_t)(RCC_CFGR_PLLSRC_HSI | RCC_CFGR_PLLMUL4 | RCC_CFGR_PLLDIV2);RCC-CR | RCC_CR_PLLON; // Enable PLLwhile((RCC-CR RCC_CR_PLLRDY) 0) // Wait till PLL is ready{}/* Select PLL as system clock source */RCC-CFGR (uint32_t)((uint32_t)~(RCC_CFGR_SW));RCC-CFGR | (uint32_t)RCC_CFGR_SW_PLL;while ((RCC-CFGR (uint32_t)RCC_CFGR_SWS) ! (uint32_t)RCC_CFGR_SWS_PLL) // Wait till PLL is used as system clock source{}}else{// HSI startup fail}
// }
}3. STM32L151C8T6 系统时钟树在STM32CubeMX 软件里面可以看的到 4. Debug 的时候一直卡在这个地方 5. 勾选微库重新编译再debug调试就OK了 6. 或者不勾选微库也行禁用半主机模式就可以了 7. 跟fputc 没关系的 重新编译调试就可以了查看系统各个总线的时钟 8. 我的问题是这个宏没有打开导致下面的代码都没有编译进来也就没有禁用半主机模式没注意看他还在这里加了一个日志宏开关我直接把他干掉了坑爹的玩意 9. 启动文件系统宏配置