本帖最后由 LeoMo 于 2026-2-11 10:38 编辑
[AppleScript] 纯文本查看 复制代码 static inline void SysTick_init(void)
{
_pscr = PSCR_CLKSEL_FSYS_DIV4;
_tb0c = TBnC_TBnON_ENABLE | TBnC_PERIOD_2P10;
_tb0e = 1; //tb0中断使能
_emi = 1; //全局中断使能
}
DEFINE_ISR(timer_base_0, 0x30)
{
// _tb0f auto reset in ISR
_pa5 = !_pa5;
// _emi auto reset in ISR
_emi = 1;
}
我通过以上代码配置,主频4MHz,4M/4*1024, 理论上应该是1024us一个中断,但测量到PA5的反转时间在1.8ms左右,为什么呢?
如果我使用STM 配置为PWM输出,时钟也是不正确的,代码如下:
[AppleScript] 纯文本查看 复制代码 static inline void stm1_pwm_init(void)
{
_pas1 = PAS1_PA5_STP1B; // PA5 STM1
STM1A_CCRA_SET(512);
_stm1c0 = STMnC0_STnCK_FSYS_DIV4 | STMnC0_STnON | STMnC0_STnRP_1024;
_stm1c1 = STMnC1_STnM_PWM_SINGLE | STMnC1_STnIO_PWM_OUTPUT | STMnC1_STnPOL_INVERT;
_stm1pe = 1; //STM1PE
_emi = 1; //emi
_mfe = 1; //mfe
}
DEFINE_ISR(m_funct, 0x3C)
{
if(_stm1pf){
_stm1pf = 0;
STM1A_CCRA_SET(512);
//YELLOW_LED_TOGGLE();
}
}
PWM 时序测量请查看附件。
|