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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版