![shequ.stmicroelectronics.cn](./template/st_v1/static/img/logo2.png)
外置晶振是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); |
STM32F407的高速USB,采用的是虚拟串口方式,VCP驱动有linux系统的吗
如何使用TIM2的更新事件触发TIM1的PWM DMA
STM32Cube配置RTOS时定时器如何选择
RAM 容量不足导致的数据溢出问题及优化方案
stm32f407的flash内容没有做任何事情,但是它的内容改变了。
给uint32_t数组填充整型值,除使用循环赋值外有没有c库函数可以实现
stm32F407平台上使用freertos,使用pvPortMalloc申请内存,发现内存中的数据总被修改,使用malloc就没有问题。
关于意法半导体BLE AOA测向定位的问题
各位朋友,有没有STM32F0系列教程,最好是汇编语言的。
STM32F407高速USB Device模式在外部中断15响应后发送4K个数据,外部中断循环给出,会导致一部分外部中断接收不到
[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呢? 代码是和上面的一样,谢谢