标题: STM32CAN收发实验源码 [打印本页]

作者: STZ    时间: 2020-3-18 16:10
标题: STM32CAN收发实验源码
#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






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1