STM32Fx 同一个定时嘀嗒定时器出来的时间不一样?

2019-10-16 05:12发布


这几天在验证自己的功能代码,发现一个比较奇怪的现象,写了一个嘀嗒定时器,在STM32F103C8T6上工作只要定义的时间超出10ms,用示波器测试出来的波形就是乱的不正确,小于10ms都能正常工作,
换了另一款STM32F103ZET6就可以正常工作;在这两个板子上外部工作的晶振也是一样的;我也读取了系统内部时钟,都是72MHZ;请大家帮忙看看什么地方出了问题;start的文件也修改了;

//**************************************************************************************************
//函 数 名:
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
hnjzwht
1楼-- · 2019-10-16 07:15
//**************************************************************************************************//函 数 名:                SysTick_Handler()//功    能:          嘀嗒定时器的中断函数//返 回 值:        无//**************************************************************************************************void SysTick_Handler(void){   PBout(1)=!PBout(1); }
//**************************************************************************************************
//函 数 名:                SysTick_int()
//功    能:          配置嘀嗒定时器为us还是ms定时,并且开启中断函数
//入口参数:        uint32_t ntime                多长时间进入一次中断
//          time_unit Times_unit           时间单位的选择,us还是ms
//返 回 值:        无
//**************************************************************************************************
void SysTick_int(uint32_t ntime, time_unit Times_unit)
{
   uint32_t F_number;
   RCC_ClocksTypeDef RCC_Clocks;          //重新定义一个数据源变量
   RCC_GetClocksFreq(&RCC_Clocks);        //得到系统的所有时间频率
   switch(Times_unit)
    {
      case us :                                                //时间单位为us级别
      F_number=ntime *(RCC_Clocks.HCLK_Frequency /1000000 );
      break;
      case ms :                                                //时间单位为ms级别
      F_number=ntime *(RCC_Clocks.HCLK_Frequency /1000 );
      break;

      default:
      break;
    }
   SysTick_Config(F_number);                                         //配置嘀嗒定时器,并启动中断;时钟源为HCLK

stm32你是我的菜噢
2楼-- · 2019-10-16 11:16
这个问题有点奇怪,估计你是不是还启用了其他的中断响应程序呢?
正点原子
3楼-- · 2019-10-16 14:21
帮顶

一周热门 更多>