我要使用DS18b20进行温度检测,需要us级别的延时,上网查...
STMCU
3776 人阅读
|
4 人回复
|
2015-12-11
TA的每日心情 | 奋斗 2015-11-30 14:13 |
|---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
童生
- 积分
- 68
|
我要使用DS18b20进行温度检测,需要us级别的延时,上网查了相关资料,看了相应的代码,然后把那些ucosII的去掉了,然后进行测试,发现延时很不准,温度也检测不了。。。
延时c文件
#include "delay.h"
void delay_init()
{
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //选择外部时钟 HCLK/8
}
void delay_us(u32 nus)
{
u32 temp;
SysTick->LOAD=nus*9; //时间加载
SysTick->VAL=0x00; //清空计数器
SysTick->CTRL|=SysTick_Counter_Enable ; //开始倒数
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16))); //等待时间到达
SysTick->CTRL&=~(SysTick_Counter_Enable); //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
void delay_ms(u16 nms)
{
u32 temp;
SysTick->LOAD=nms*9000;//时间加载(SysTick->LOAD为24bit)
SysTick->VAL =0x00; //清空计数器
SysTick->CTRL|=SysTick_Counter_Enable ; //开始倒数
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达
SysTick->CTRL&=~(SysTick_Counter_Enable); //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
头文件
#ifndef __DELAY_H
#define __DELAY_H
#include"stm32f10x_lib.h"
void delay_init(void);
void delay_ms(u16 nms);
void delay_us(u32 nus);
#endif
测试情况:
此时时间:
运行:
此时时间:
整整相差0.0775568,也就是78ms , 也是 77557us ,并不是750us 。。。。。
我是放在main函数里测试的
|
|
|
|
|
|
|
|
|
TA的每日心情 | 奋斗 2015-11-30 14:13 |
|---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
童生
- 积分
- 68
|
沙发
clyclycly
发表于 2015-12-12 08:52:01
|
只看该作者
前面的断点设置有些问题,改正了一下,但发现时间还是不对啊,相差5ms啊
|
|
|
|
|
|
|
|
|
TA的每日心情 | 奋斗 2020-5-27 15:41 |
|---|
签到天数: 868 天 连续签到: 1 天 [LV.10]以坛为家III
进士
- 积分
- 2900
    

|
板凳
wambob
发表于 2015-12-12 10:40:31
|
只看该作者
750us是大约的吧,内部晶振本来就不准的
温度是可以检测的,我用cubeMX读18b20,因为HAL库没微妙延迟,也是用的系统滴答 |
|
|
|
|
|
|
|
|
TA的每日心情 | 奋斗 2015-11-30 14:13 |
|---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
童生
- 积分
- 68
|
地板
clyclycly
发表于 2015-12-12 10:57:34
|
只看该作者
|
可我选择的是外部时钟啊,是晶振提供的,不是应该很准吗 |
|
|
|
|
|
|
|
|
TA的每日心情 | 奋斗 2015-11-30 14:13 |
|---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
童生
- 积分
- 68
|
5#
clyclycly
发表于 2015-12-12 10:58:48
|
只看该作者
wambob 发表于 2015-12-12 10:40 ![]()
750us是大约的吧,内部晶振本来就不准的
温度是可以检测的,我用cubeMX读18b20,因为HAL库没微妙延迟,也是 ...
可我选择的是外部时钟啊,是晶振提供的,不是应该很准吗 |
|
|
|
|
|
|
|
|