你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f103 systick计时器的实现(不是延时,而是计时)

[复制链接]
苏墨染 提问时间:2015-4-19 18:53 /
如题,我想在一个传感器第一次传来信号时,启动systick,然后在第二次传来信号时,关闭systick,然后计算两次时间的差值获取其中间隔时间。但是现在碰到的问题是,在两次相同的外部中断传来时要产生两种不同的反应。我设计了一个n,由n%2控制进入某一个函数,但是无法正常获取数据。求指教。贴出部分程序、。
if(EXTI_Status == 1 && n%2 == 0)
                                {
                                        count=0;
                                        delay_ms(1);
                                        t1=time();
                                        EXTI_Status=0;
                                        n++;
                                }       
                        else if(EXTI_Status == 1 && n%2 ==1)
                                {
                                  T=time();
                                        T=T-t1;
                                        mile=PI*D*3.6;       
                Speed=mile/T;
                sprintf(string,"%3.1fKm/h Time:%dms",Speed,T);
                                        LCD_ClearLine(Line4);
                LCD_DisplayStringLine(Line4,string);
                                        n++;
                                }                                       


void delay_ms(u16 nms)
{                                     
        u32 temp;                  
        SysTick->LOAD=(u32)nms*fac_ms;
        SysTick->VAL =0x00;           //清空计数器
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;          //开始倒数  
        do
        {
                temp=SysTick->CTRL;
        }
        while(temp&0x01&&!(temp&(1<<16)));
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;       //关闭计数器
        count++;                            //标志位加一
        SysTick->VAL =0X00;       //清空计数器
}





收藏 1 评论5 发布时间:2015-4-19 18:53

举报

5个回答
沐紫 回答时间:2015-4-23 14:29:30
谢谢
回答时间:2015-4-23 16:44:40
systick是固定参数一次中断,一般是中断中加一个计数器+1的操作。
这里我不明白楼主systick开启和关闭是想做什么用?想记时,可以通过RTC或者2个计数器,一个是systick计数器,一个秒计数器,当systick>=1秒时,秒+1。从而得到更精确的时间。
苏墨染 回答时间:2015-4-29 12:40:25
安 发表于 2015-4-23 16:44
systick是固定参数一次中断,一般是中断中加一个计数器+1的操作。
这里我不明白楼主systick开启和关闭是想 ...

这个可能需要精确到毫秒  你说的秒计时器是指tim么
回答时间:2015-4-29 15:01:32
可以在systick里面进行操作,对一个变量进行+1。
wakojosin 回答时间:2015-4-29 18:22:22
这个方案应该有很多种吧

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版