基于STM32+ucos-II+DS18B20调试成功

发布者:数字行者最新更新时间:2016-07-25 来源: eefocus关键字:STM32  ucos-II  DS18B20 手机看文章 扫描二维码
随时随地手机看文章
前几天调试了一下DS18B20的程序,起初系统在裸奔的时候DS18B20可以很正常的读取数据。由于项目前期设计时添加了ucos实时操作系统。原以为把裸奔的程序移植过来就可以使用。结果悲剧发生了……如果做过这方面的朋友一定知道。添加后,你会发现系统不跑了,彻底的死掉了。原因在何处?经过一整天的查找,发现原来系统的时间片被占用了。导致ucos的ticks出现异常。

解决办法:一种方法是:修改OS_CPU_SysTickInit(void)函数,与delay函数进行兼容。在温度传感器延时的时候不影响操作系统的tick运行。这样就可以解决问题了。

还有一种方法就是,把18B20的延时定时器更换成TIM3或者是其他定时器。和系统的tick分开。即可解决。

关键字:STM32  ucos-II  DS18B20 引用地址:基于STM32+ucos-II+DS18B20调试成功

上一篇:s3c2440的简单BOOTLOADER
下一篇:AD7714+STM32使用注意事项

推荐阅读最新更新时间:2024-03-16 15:01

STM32之内部FLASH例程
#include stm32f10x.h #include /* STM32 内部 FLASH 配置 */ #define STM32_FLASH_SIZE 512 /* 所选STM32的FLASH容量大小(单位为K) */ #if STM32_FLASH_SIZE 256 #define STM_SECTOR_SIZE 1024 /* 256为1K字节页, =256 为2K页 */ #else #define STM_SECTOR_SIZE 2048 #endif /* 应用程序区域 */ #define APP_REGION (0x8000000 + 0x80000 - STM_SECTO
[单片机]
STM32系统时钟的小知识
什么是时钟? 时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。 为什么 STM32 要有多个时钟源呢? STM32本身十分复杂,外设非常多 但我们实际使用的时候只会用到有限的几个外设,使用任何外设都需要时钟才能启动,但并不是所有的外设都需要系统时钟那么高的频率,为了兼容不同速度的设备,有些高速,有些低速,如果都用高速时钟,势必造成浪费 并且,同一个电路,时钟越快功耗越快,同时抗电磁干扰能力也就越弱,所以较为复杂的
[单片机]
STM32学习笔记之GPIO口的使用
STM32 Cotex-M3 GPIO口简介与配置 一、GPIO口简介 1、 GPIO口输入输出模式 1.1 一般来说STM32的输入输出管脚有以下8种配置方式: 输入 ① 浮空输入_IN_FLOATING 浮空输入,可以做KEY识别 ② 带上拉输入_IPU IO内部上拉电阻输入 ③ 带下拉输入_IPD IO内部下拉电阻输入 ④ 模拟输入_AIN 应用ADC模拟输入,或者低功耗下省电 输出 ⑤ 开漏输出_OUT_OD IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。
[单片机]
<font color='red'>STM32</font>学习笔记之GPIO口的使用
STM32的外部中断配置
一.配置中断 void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; /* Set the Vector Table base location at 0x08004000 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x4000); // 1.分配中断向量表 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级 /* Enable the EXTI1 Interrupt NVIC_InitStructure.NVIC_IRQCha
[单片机]
STM32时钟树解析
本人之前其实也用STM32做过一些小东西,但因为时钟的初始化一般是直接在SystemInit时钟系统初始化函数里直接配置为72MHz,所以对于STM32的时钟框图并没有怎么理会,今天刚好有空就重新看了一下并写一篇博客记录一下吧,以免以后又忘了。 STM32 有5个时钟源:HSI、HSE、LSI、LSE、PLL。 ①、HSI(High Speed Internal Clock signal)是高速内部时钟,RC振荡器,频率为8MHz,精度不高,受温度影响。  ②、HSE(High Speed External Clock signal)是高速外部时钟,为外接晶振提供的时钟,晶振频率范围为4MHz~16MHz,常用8MHz的外
[单片机]
<font color='red'>STM32</font>时钟树解析
JSN-SR04T超声波模块驱动(模式二、STM32
一、前期准备 单片机:STM32F103C8T6 开发环境:MDK5.14 库函数:标准库V3.5 JSN-SR04T模块:淘宝有售 二、实验效果 三、驱动原理 此模块分3中模式: (1)模式一:R27 = open,普通驱动模式; (2)模式二:R27 = 47K,串口模式,每隔100ms更新一次数据。 (3)模式三:R27 = 120K,串口模式,发0x55。 注意:次模块测试盲区20cm。 串口二接收模块数据,每隔100ms刷新次数据,串口接收数据之后,做完校验之后算出测试距离并打印出来。 需要完整工程或者有问题的请加QQ:1002521871,验证:呵呵。 四、驱动代码 JSN-SR04T.h #if
[单片机]
JSN-SR04T超声波模块驱动(模式二、<font color='red'>STM32</font>)
STM32串口发送中断
SECTION 2 先说TC。即Transmission Complete。发送一个字节后才进入中断,这里称为 发送后中断 。和原来8051的TI方式一样,都是发送后才进中断,需要在发送函数中先发送一个字节触发中断。发送函数如下 /* 功能:中断方式发送字符串.采用判断TC的方式.即 判断 发送后中断 位. 输入:字符串的首地址 输出:无 */ void USART_SendDataString( u8 *pData ) { pDataByte = pData; USART_ClearFlag(USART1, USART_FLAG_TC);//清除传输完成标志位,否则可能会丢失第1个字节的数据.网友提供.
[单片机]
<font color='red'>STM32</font>串口发送中断
STM32如何高效接收串口数据?
硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0 DMA,直接内存存取,可以用它的双手释放CPU的灵魂,所以,本文通过USART3进行串口收发,接受使用DMA的方式,无需CPU进行干预,当接受完成之后,数据可以直接从内存的缓冲区读取,从而减少了CPU的压力。 具体的代码实现如下: usart_driver.h 封装了接口,数据接收回调函数类型,基本数据结构等; usart_driver.c 函数原型实现,中断服务函数实现等; 拷贝这两个文件即可,可以根据目录下的参考用例,进行初始化。 头文件usart_driver.h已经声明了外部函数可能用到的接口; USART3_DR的地
[单片机]
<font color='red'>STM32</font>如何高效接收串口数据?
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved