找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1411|回复: 0
打印 上一主题 下一主题
收起左侧

STM32CAN收发实验源码

[复制链接]
跳转到指定楼层
楼主
ID:710218 发表于 2020-3-18 16:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"         
#include "can.h"

int main(void)
{         
                u8 key;
        u8 i=0,t=0;
        u8 cnt=0;
        u8 canbuf[8];
        u8 res;
        u8 mode=CAN_Mode_LoopBack

        delay_init();            
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2)
        uart_init(115200);         
        LED_Init();                         
        LCD_Init();                          
        KEY_Init();                               

        CAN_Mode_Init(CAN_SJW_1tq,CAN_BS2_8tq,CAN_BS1_9tq,4,CAN_Mode_LoopBack)

        POINT_COLOR=RED
        LCD_ShowString(60,50,200,16,16,"WarShip STM32");       
        LCD_ShowString(60,70,200,16,16,"CAN TEST");       
        LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(60,110,200,16,16,"2015/1/15");
        LCD_ShowString(60,130,200,16,16,"LoopBack Mode");         
        LCD_ShowString(60,150,200,16,16,"KEY0:Send WK_UP:Mode")
        POINT_COLOR=BLUE  
        LCD_ShowString(60,170,200,16,16,"Count:");               
        LCD_ShowString(60,190,200,16,16,"Send Data:");       
        LCD_ShowString(60,250,200,16,16,"Receive Data:");       
        while(1)
        {
                key=KEY_Scan(0);
                if(key==KEY0_PRES)//KEY0°′ÏÂ,·¢Ëíò»′Îêy¾Y
                {
                        for(i=0;i<8;i++)
                        {
                                canbuf[i]=cnt+i;
                                if(i<4)LCD_ShowxNum(60+i*32,210,canbuf[i],3,16,0X80);
                                else LCD_ShowxNum(60+(i-4)*32,230,canbuf[i],3,16,0X80);
                        }
                        res=Can_Send_Msg(canbuf,8);
                        if(res)LCD_ShowString(60+80,190,200,16,16,"Failed");       
                        else LCD_ShowString(60+80,190,200,16,16,"OK    ");                                                                           
                }else if(key==WKUP_PRES
                {          
                        mode=!mode;
                          CAN_Mode_Init(CAN_SJW_1tq,CAN_BS2_8tq,CAN_BS1_9tq,4,mode)
                        POINT_COLOR=RE
                        if(mode==0
                        {
                                LCD_ShowString(60,130,200,16,16,"Nnormal Mode ");            
                        }els
                        {
                                LCD_ShowString(60,130,200,16,16,"LoopBack Mode");
                        }
                        POINT_COLOR=BLUE
                }                 
                key=Can_Receive_Msg(canbuf);
                if(key
                {                       
                        LCD_Fill(60,270,130,310,WHITE)
                        for(i=0;i<key;i++)
                        {                                                                            
                                if(i<4)LCD_ShowxNum(60+i*32,270,canbuf[i],3,16,0X80);
                                else LCD_ShowxNum(60+(i-4)*32,290,canbuf[i],3,16,0X80);
                        }
                }
                t++;
                delay_ms(10);
                if(t==20)
                {
                        LED0=!LED0;
                        t=0;
                        cnt++;
                        LCD_ShowxNum(60+48,170,cnt,3,16,0X80);
                }                  
        }
}

CAN收发实验.rar

344.28 KB, 下载次数: 35, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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