本帖最后由 lhwqwer 于 2019-4-8 19:48 编辑
yanxinboy 发表于 2019-4-8 12:09
没看到你的延时函数,一般是时序的问题吧。调试看看
#include "bsp_SysTick.h"
static __IO u32 TimingDelay;
void SysTick_Init(void)
{
/* SystemFrequency / 1000 1msÎ
* SystemFrequency / 100000 10us
* SystemFrequency / 1000000 1us
*/
// if (SysTick_Config(SystemFrequency / 100000)) // ST3.0.0
if (SysTick_Config(SystemCoreClock / 1000000)) // ST3.5.0
{
/* Capture error */
while (1);
}
SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
}
void Delay_us(__IO u32 nTime)
{
TimingDelay = nTime;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
while(TimingDelay != 0);
}
void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
//////////////////////.h////////////////////////////
#ifndef __SYSTICK_H
#define __SYSTICK_H
#include "stm32f10x.h"
void SysTick_Init(void);
void Delay_us(__IO u32 nTime); // 1us
#define Delay_ms(x) Delay_us(1000*x) //ms
#endif /* __SYSTICK_H */
这个是延时的.c和 .h文件,我用的是网盘上给好的ds18b20传感器的例程,烧进ds18b20测水温的,串口工具显示就是25度,没有变化,是不是代码不适合测水温的?