
外置晶振是8M,使用最高的系统时钟168M,然后使用定时器TIM8作为定时器更新中断,程序的寄存器PLL_N = 336;PLL_P = 2;PLL_M = 8;要配置一个16KHz,也即是周期为62.5us的中断,但是实际测试出来就是查了一点,利用一进入中断置GPIO的方式测试,示波器实测63.2us,也试过用Uint64的计数器,测试13分钟,测试记录到的值和理论值相差7.9s左右,所以是排除了程序置GPIO所用的时间导致的,实在查不出那儿的问题,望大神们指教一下: 如果配置成125us,实测126us,总是达不到理论的周期。定时器的配置: TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_CenterAligned3; TIM_TimeBaseStructure.TIM_Period = 10500; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure); |
STM32 F407骄阳电机版用DMA双缓存接收串口数据时,上电第一次接收区是memory1而不是memory0?
STM32F407骄阳版用DMA双缓存区接收串口数据,上电第一次接收到的数据在memory1而不是memory0
stm32f407无法配置定时器2为全部dma
FreeRTOS问题求解
使用stm32F407连接PHY芯片进行以太网通讯,一插网线就会进入错误中断。
定时器使用DMA突发传输功能时,传入指针从常量数组改为变量数组后,传输功能异常。测试官方用例一样,是何原因?
ST的IMU和地磁计用motionfx库融合后航向角异常的问题
CUEBIDE生成的APP程序,在写入FLASH之后无法正常跳转。
有关Cubeide IAP 问题
stm32驱动st7735屏幕区分地图上的障碍物.
[md]我这边就两种方式都实测过。
基于外部8MHz晶振作为时钟源,利用定时器和GPIO翻转得到的输出非常准而稳。
基于内部16MHz HSI作为时钟源,利用定时器和GPIO翻转得到的输出也很准、稳,相比上面
稍微有点抖动,0 ~ 0.5us的样子。 我这边通过示波器测量和观察。
10500这个修改为10500 - 1,试一下。
试过了,没有多大用,起码改为10500-100才接近62.5us
从配置上看:
Auto-reload register (TIMx_ARR) 这个寄存器的值,也就是 TIM_TimeBaseStructure.TIM_Period = 10500; 应该减1。
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_CenterAligned3;
TIM_TimeBaseStructure.TIM_Period = 10500-1;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
我这边测试非常准,你现在有问题。要么你时钟有问题,
要么你的测量有问题。
感谢你的回答,我尝试过用内部晶振16Mhz作为pll输入,就准确了,也就是说明是我的外部晶振不准吗?因为外部晶振频率很难用示波器测试,示波器夹上去就波形都是不稳定的。
[md]感谢回答,我把我的贴片晶振换成直插式那种晶振就好了,没想到差别这么大,贴片的晶振不准确啊.....
你好,还有个问题想请教一下的,就是我的TIM的周期值是10499,中心对齐模式,不分频,10500*84Mhz = 8Khz,,为什么我测试出来是16Khz呢? 代码是和上面的一样,谢谢