您好,STM32输出步进电机的引脚可以根据不同的型号来确定,一般来说,STM32芯片的步进电机输出引脚主要有PA0-PA7,PB0-PB7,PC0-PC7,PD0-PD7,PE0-PE7,PF0-PF7,PG0-PG7,PH0-PH7,PI0-PI7,PJ0-PJ7,PK0-PK7,PL0-PL7,PM0-PM7,PN0-PN7,PO0-PO7,PP0-PP7,PQ0-PQ7,PR0-PR7,PS0-PS7,PT0-PT7,PU0-PU7,PV0-PV7,PW0-PW7,PX0-PX7,PY0-PY7,PZ0-PZ7。因此,您可以根据自己的需求来选择正确的引脚,以便更好地控制步进电机。
以STM32F103VB系列为例,100pin, 一般我们通常使用的IO对应外部中断线如下: PA0,PB0,PC0,PD0,PE0 对应的是EXTI0中断线; 以此类推 到PA15,PB15,PC15,PD15,PE15对应EXTI5中断线。
STM32里面EXTI0 – EXTI4这5个外部中断有着自己的单独的中断就表示哪个中断被触发。
你打开stm32的启动文件,例如startup_stm32f10x_hd.s 里面有很多中断跳转的入口。用白话说就是固件库帮你写好了发生什么中断时跳转到哪里,这些名字是一个函数名,你要把这些函数写出来,然后中断来了stm32就跳到这样函数名的函数里面来。
这是STM32官方库给出的配制系统定时器中断的库函数:
static __INLINE uint32_t SysTick_Config(uint32_t ticks){。
if (ticks > SysTick_LOAD_RELOAD_Msk) return (1);。
SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;。
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);。
SysTick->VAL = 0;。
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |。
SysTick_CTRL_TICKINT_Msk |。
SysTick_CTRL_ENABLE_Msk; 。
return (0);
只需要把形参ticks赋值为50就能让系统定时器每20ms中断一次。
如果ProteusSTM32仿真无法进入定时器中断,可能是因为定时器中断的配置问题造成的。请检查定时器中断的中断优先级是否已正确设置,并且中断函数是否已正确添加到中断向量表中,最后再检查中断是否已正确使能,这样就可以保证定时器中断的正常运行了。