⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 CAN 程序使用MCP2515 由STM32做主芯片控制
💻 C
字号:
/*******************************************************************************
* File Name          : main.c
* Author             : 
* Date First Issued  : 03/31/2009
* Description        : Main program body
********************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include "..\header\stm32f10x_reg.h"
#include "..\header\type.h"
#include "..\header\mcp2515.h"
#include "..\header\hardware.h"
 #include "..\header\can.h"
 #include "..\header\spi.h"
 #include "..\header\rcc.h"
 #include "..\header\uart.h"
 #include <stdio.h>
 #include <string.h>
/* Local includes ------------------------------------------------------------*/
/* Private typedef -----------------------------------------------------------*/
u32 delay_ns(u32 n);

/* Private define ------------------------------------------------------------*/


/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/


/* Private functions ---------------------------------------------------------*/
u32 delay_ns(u32 n)
{
   int i,j;
   for(j=0;j<n;j++)
   for(i=0;i<5000;i++)
   ;
   return 0;
} 

/*******************************************************************************
* Function Name  : main
* Description    : Main program
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
int main(void)
{ 
   CAN_MESSAGE rec_msg;
   unsigned short int rec;
   unsigned char buf[30];

   rcc_intialize();
   initialize_uart();
   spi_initialize();  
   can_init();
  //filter setting;
  mcp2515_set_register(MCP_RXF0SIDH,0x05);   //ID=0x05 can be receive;
	mcp2515_set_register(MCP_RXF0SIDL,0x00);

	mcp2515_set_register(MCP_RXM0SIDH,0xF6);
	mcp2515_set_register(MCP_RXM0SIDL,0xE0);
   mcp2515_set_register(MCP_RXB0CTRL,0x00);  //receive all message, 0x0f->0xff,enable the filter;
   mcp2515_set_register(MCP_RXB1CTRL,0x00); //RXB1CTRL;

   	
   
	 INTIALIZE_CS;
   //Led intialize;
   GPIOB->CRL.B.CNF7  =0	;
   GPIOB->CRL.B.MODE7 =3   ;  
   delay_ns(10);									   
   
	mcp2515_set_register(MCP_CANINTE,0x03);
  //bit7-bit5: 000 naomal mode,  010 recycle mode, 100 setting mode;
	mcp2515_set_register(0x4F,0x87); //out clock set, work mode set; 
	 delay_ns(5);
	 memset(buf,0,40); 
	// mcp2515_set_register(0x31,0x);

  while(1)
  {	
	
	 buf[9]= mcp2515_read_register(MCP_RXF0SIDH);
	 buf[10]= mcp2515_read_register(MCP_RXM0SIDH);
	 buf[11]= mcp2515_read_register(0x4f);	
	 buf[12]= mcp2515_read_register(0x60);
	 buf[13]= mcp2515_read_register(0x70);
	// buf[14]= mcp2515_read_register(MCP_RXM0SIDL);
	  
	  can_test_transmit(0);

	  can_read_message(&rec_msg);
		
		buf[0]=rec_msg.dlc;
		buf[1]=rec_msg.dta[0];
		buf[2]=rec_msg.dta[1];
		buf[3]=rec_msg.dta[2];
		buf[4]=rec_msg.dta[3];
		buf[5]=rec_msg.dta[4];
		buf[6]=rec_msg.dta[5];
		buf[7]=rec_msg.dta[6];
		buf[8]=rec_msg.dta[7];
		 
	   send_buffer_to_uart(buf,14);
	  //send_string_to_uart(buf);

		delay_ns(500);
	 GPIOB->BSRR.B.SETIO7=1;
	  delay_ns(500);	
	      GPIOB->BSRR.B.CLRIO7=1;
		//  while(rec_msg->dlc==0x04);  	  	   
   
//   return 0; 
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -