打印

STM32systick的问题

[复制链接]
3322|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kangwuwei|  楼主 | 2011-4-2 14:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我近期在使用STM32的系统时钟实现延时,我需要实现的延时12.5us的倍数,我设计如下:void Systick_Initconfig()
{ SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK) ;
SysTick_SetReload(720);    // 12.5us  可能要修改此值
    SysTick_ITConfig(ENABLE);  //时能使能中断
}
按照正常的技术来说 12.5us的延时,“SysTick_SetReload”这个函数的值不应该是720,720应该是10us吧。
我现在做了一个简单的编码,发送0x55低位优先发送:编码方式是:37.5us的低电平代表数据开始,高电平25us表示,低电平12.5us表示;
设计的编码如下:
u8 code[9]= {0x03,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x01};
for(i=0;i<9;i++)
  {
    switch(code[i])
    {
    case 0x03:
     {GPIO_ResetBits(GPIOB,GPIO_Pin_0);
    Systick_Delays(3);
   
   }
   break;
   case 0x02:
   {
   GPIO_SetBits(GPIOB,GPIO_Pin_0);
            Systick_Delays(2);
   
   }
     break;
  case 0x01:
   {
    GPIO_ResetBits(GPIOB,GPIO_Pin_0);
          Systick_Delays(1);
   
   }
     break;
  default: break;
  }
但我实际测量发现,高电平没有25us,只有20us 差值也太大了吧
沙发
LDTEST| | 2011-4-2 18:54 | 只看该作者
本帖最后由 LDTEST 于 2011-4-2 18:55 编辑

函数调用也要时间吧,us 级别的 恐怕必需要考虑这个问题,何况 库函数 本来就慢

使用特权

评论回复
板凳
机器猫咪咪| | 2011-4-10 16:25 | 只看该作者
我们正在学习ARMJISHU的神舟III号STM32开发板,是基于STM32F103ZET的,其资源丰富,例程详细,根据学习光盘自带的例程我感觉:
10us建议使用如下方式:
  SysTick_Config(RCC_Clocks.SYSCLK_Frequency / 100000);
1S中中断100000次,也就是10us中断1次

使用特权

评论回复
地板
liwandong| | 2011-4-13 09:27 | 只看该作者
挺不错哦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

190

帖子

0

粉丝