OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4684|回复: 0

stm32mini板例程中DS18b20和PWM两个例程为什么不能兼容在一起?

[复制链接]

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2021-4-17
在线时间
45 小时
发表于 2021-7-20 14:55:21 | 显示全部楼层 |阅读模式
5金钱
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "pwm.h"
#include "lcd.h"
#include "PID.h"
#include "ds18b20.h"
#include "usart.h"
#include "timer.h"


u16 TEMP;                        //储存到小数一位的实际实时温度
u16 SETTEMP=80;
u8 flag100ms=0;

//void KeyAction(unsigned char key);
void ShowTemp(void);
void ShowSetTemp(void);
//void ShowPWM(void);
  


int main(void)
{
//  u8 t=0;        
    unsigned char flag200ms=0;
//short temperature;   
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
    delay_init();             //延时函数初始化      
    uart_init(9600);         //串口初始化为9600
    LED_Init();                  //初始化与LED连接的硬件接口
     LCD_Init();
    TIM3_Int_Init(10-1,8400-1);        //实现1ms
    TIM1_PWM_Init(9999,7199);  //不分频。PWM频率=72000/(899+1)=80Khz  72000000/7200=10000 /10000=1hz
  PID_Init();

   
    while(DS18B20_Init())    //DS18B20初始化    返回1的时候是不存在
    {
    POINT_COLOR=RED;//设置字体为红色
        LCD_ShowString(30,130,200,16,16,"DS18B20 Error");
        delay_ms(200);
        LCD_Fill(30,130,239,130+16,WHITE);
         delay_ms(200);
    }        
   
  POINT_COLOR=RED;//设置字体为红色
    LCD_ShowString(30,10,200,16,16,"DS18B20 OK");
    LCD_ShowString(30,30,200,16,16,"The PV is 100.0C");
     LCD_ShowString(30,60,200,16,16,"Temp:   . C");     //10 30 50多一行,不要错认为
    POINT_COLOR=RED;//设置字体为红色
    LCD_DrawLine(0,700-(SETTEMP/2),480,700-(SETTEMP/2));
//    ShowSetTemp();
   
//    delay_ms(10);   
  TIM_SetCompare1(TIM1,4999);   
    while(1)
    {     

         if(flag100ms)//每100ms读取一次 5*20
        {                                       

            flag200ms++;
            if(flag200ms<2)
            {
                flag200ms=0;
                ShowTemp();                                    //500ms测量一次温度
//                PWM=PID_realize();
                TIM_SetCompare1(TIM1,4999);
//                ShowPWM();
           
            }   
        }
        delay_ms(10);
//        t++;

     }                       
            
}
/*****************************/   
void ShowSetTemp(void)
{
    POINT_COLOR=BLUE;//设置字体为蓝色
    LCD_ShowString(30,30,200,16,16,"The PV is 80.0C");
}
/******************************/
void ShowTemp(void)
{
  static int x=0;
    short temperature;  
   
    temperature=DS18B20_Get_Temp();
    TEMP=temperature;
        if(temperature<0)
    {
        LCD_ShowChar(30+40,150,'-',16,0);            //显示负号
        temperature=-temperature;                    //转为正数
        }else
             LCD_ShowChar(60+40,150,' ',16,0);            //去掉负号
             LCD_ShowNum(30+40+8,60,temperature/10,2,16);    //显示正数部分        
            LCD_ShowNum(30+40+32,60,temperature%10,1,16);    //显示小数部分            
            
    //给当前温度打点
    x++;if(x>=480)x=0;
    LCD_DrawPoint(x,970-(TEMP/2));

}




34.timePWM.rar

2.85 MB, 下载次数: 120

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 06:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表