想用stm32f103c8t6驱动2个步进电机(额定电压12V,额定电流1.5A),应该怎样驱动,需要用多少块驱动板,用参数多少的开关电源才合适?
通常按额定电流5倍冗余
/**
* @brief Setup the microcontroller system
* Initialize the Embedded Flash Interface, the PLL and update the
* SystemCoreClock variable.
* @note This function should be used only after reset.
* @param None
* @retval None
*/
void SystemInit (void)
{
#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
#ifdef DATA_IN_ExtSRAM
SystemInit_ExtMemCtl();
#endif /* DATA_IN_ExtSRAM */
#endif
/* Configure the Vector Table location -------------------------------------*/
#if defined(USER_VECT_TAB_ADDRESS)
SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
#endif /* USER_VECT_TAB_ADDRESS */
}
大家打开system_stm32f1xx.c文件找到SystemInit函数实现,这是STM32CubeMX生成的,我们需要将此函数进行改写。
首先介绍一下STM32的时钟树
在STM32F103C8T6中有四个系统时钟源分别为
1. 高速外部时钟(HSE):以外部晶振作时钟源,晶振频率可取范围为4~16MHz,我们一般采用8MHz的晶振。
2. 高速内部时钟(HSI):由内部RC振荡器产生,频率为8MHz,但不稳定。
3. 低速外部时钟(LSE):以外部晶振作时钟源,主要提供给实时时钟模块,所以一般采用32.768KHz。
4. 低速内部时钟(LSI):由内部RC振荡器产生,也主要提供给实时时钟模块,频率大约为40KHz。
我们选择信号稳定的高速外部时钟(HSE),假设我们的晶振频率是8MHz。而STM32F103C8T6最大频率不是72MHz吗怎么用8MHz呢?
我们还需要将晶振输出的信号通过锁相环PLL进行9倍频输出给各个外设桥而8*9=72所以外设桥的工作频率实际上就是72MHz了