完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
如题,我想在一个传感器第一次传来信号时,启动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; //清空计数器 } |
|
相关推荐
5个回答
|
|
|
|
systick是固定参数一次中断,一般是中断中加一个计数器+1的操作。
这里我不明白楼主systick开启和关闭是想做什么用?想记时,可以通过RTC或者2个计数器,一个是systick计数器,一个秒计数器,当systick>=1秒时,秒+1。从而得到更精确的时间。 |
|
|
|
TOPCB 发表于 2018-9-27 17:26 这个可能需要精确到毫秒 你说的秒计时器是指tim么 |
|
|
|
可以在systick里面进行操作,对一个变量进行+1。
|
|
|
|
这个方案应该有很多种吧
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1441 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1373 浏览 3 评论
3018 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1519 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1949 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 18:17 , Processed in 1.099224 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号