找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3240|回复: 4
收起左侧

STM32 CAN总线温度采集系统(点对点)源程序

  [复制链接]
ID:320890 发表于 2018-5-2 23:26 | 显示全部楼层 |阅读模式
STM32 CAN总线测试程序  本程序分主机程序和从机程序 硬件平台是本人自己设计的开发板 经测试程序运行稳定
0.png

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"         
  7. #include "can.h"
  8. #include "ds18b20.h"

  9. int main(void)
  10. {
  11.         u8 i=0,t=0;
  12.         u8 canbuf1[8];
  13.         u8 canbuf0[8];
  14.         u8 temp;
  15.         u8 res;
  16.     short temperature;             
  17.         NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

  18.         KEY_Init();                                //按键初始化                        
  19.    
  20.         CAN_Mode_Init(CAN_SJW_1tq,CAN_BS2_1tq,CAN_BS1_6tq,9,CAN_Mode_Normal);//CAN初始化环回模式,波特率500Kbps   原来的 CAN_Mode_Normal

  21.         delay_init();                     //延时函数初始化          
  22.         uart_init(9600);                 //串口初始化为9600
  23.         LED_Init();                                  //初始化与LED连接的硬件接口
  24.         LCD_Init();
  25.         POINT_COLOR=RED;//设置字体为红色
  26.         LCD_ShowString(60,50,200,16,16,"Mini STM32");       
  27.         LCD_ShowString(60,70,200,16,16,"DS18B20+CAN TEST");       
  28.         LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
  29.         LCD_ShowString(60,110,200,16,16,"2016/6/6");
  30.         LCD_ShowString(60,130,200,16,16,"LoopBack Mode");
  31.         LCD_ShowString(60,190,200,16,16,"Send Data:");
  32.         while(DS18B20_Init())        //DS18B20初始化       
  33.         {
  34.                 LCD_ShowString(60,130,200,16,16,"DS18B20 Error");
  35.                 delay_ms(200);
  36.                 LCD_Fill(60,130,239,130+16,WHITE);
  37.                 delay_ms(200);
  38.         }                                                                  
  39.         LCD_ShowString(60,130,200,16,16,"DS18B20 OK");
  40.         POINT_COLOR=BLUE;//设置字体为蓝色
  41.         LCD_ShowString(60,150,200,16,16,"Temp:   . C");         
  42.         while(1)
  43.         {                        
  44.                 if(t%10==0)//每100ms读取一次
  45.                 {                                                                          
  46.                         temperature=DS18B20_Get_Temp();       
  47.                         if(temperature<0)
  48.                         {
  49.                                 LCD_ShowChar(60+40,150,'-',16,0);                        //显示负号
  50.                                 temperature=-temperature;                                        //转为正数
  51.                         }else LCD_ShowChar(60+40,150,' ',16,0);                        //去掉负号
  52.                         LCD_ShowNum(60+40+8,150,temperature/10,2,16);        //显示正数部分
  53.                         LCD_ShowNum(60+40+32,150,temperature%10,1,16);        //显示小数部分
  54.                        
  55.                         temp=temperature;
  56.             for(i=0;i<8;i++)
  57.                                 canbuf0[i]=temp;        //温度赋值并发送到主机
  58.                         Can_Send_Msg(canbuf0,8);//发送8个字节
  59.                         temp=temperature>>8;
  60.                         for(i=0;i<8;i++)
  61.                                 canbuf1[i]=(temp);        //温度赋值并发送到主机
  62.                         Can_Send_Msg(canbuf1,8);//发送8个字节
  63. //                        if(res)LCD_ShowString(60+80,190,200,16,16,"Failed");                //提示发送失败
  64. //                        else LCD_ShowString(60+80,190,200,16,16,"OK    ");                         //提示发送成功                   
  65.                 }                                  
  66.                  delay_ms(10);
  67.                 t++;
  68.                 if(t==20)
  69.                 {
  70.                         t=0;
  71.                         LED0=!LED0;
  72.                 }
  73.         }
  74. }
复制代码

所有资料51hei提供下载:
CAN实验.rar (1.32 MB, 下载次数: 165)
回复

使用道具 举报

ID:304620 发表于 2018-5-3 15:02 | 显示全部楼层
不错,谢谢分享
回复

使用道具 举报

ID:290871 发表于 2018-5-19 10:44 | 显示全部楼层
short temperature是啥意思
回复

使用道具 举报

ID:1018878 发表于 2022-6-9 16:23 | 显示全部楼层
这个io接口怎么设置的
回复

使用道具 举报

ID:833102 发表于 2023-7-11 17:21 | 显示全部楼层
666好文章
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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