BraveNeoQQ 2021-04-09 13:41 采纳率: 0%
浏览 20

一上电cantest就一直在接收报文,怎么逢变接收?一直没能修改好,望大神帮助一下

/*
	°æ±¾200901-D1
  Ôö¼Ó³¬¹ýADÖµ10¼ì²â³É¹¦
	¶à·¢Ò»¸öCANIDÊý¾Ý
	Ôö¼ÓÕ¼ÓóöÇåʵÏÖ³ÌÐò
*/

#include "stm32f10x.h"
#include "led.h"
#include "dac.h"
#include "adc.h"
#include "timer.h"
#include "can.h"
#include "crc8_16.h"

u8 fv,fv2,fv2_falg,i,ii,timer_value,flash_flag,a_num,b_num;
u32 ADC1_ConvertedValue,ADC2_ConvertedValue,adjust1,adjust2,adjust3,adjust4,a_com,b_com;

u8 JZdata[20];
u8 ZYdata[8];

u16 xl;
u16 crc;
CanRxMsg RxMessage1;
CanTxMsg TxMessage;
CanTxMsg TxMessage_1;  //Ôö¼ÓÒ»¸öCANIDÓÃÓÚ¿ØÖÆÕ¼ÓóöÇå

void IWDG_Configuration(void);
void self_checking(void);
void delay_us(u32 nTimer);
void delay_ms(u32 nTimer);

const uint16_t Sine12bit[50] = {
                       0x7FF,0x900,0x9FC,0xAF1,0xBD9,0xCB2,0xD79,0xE29,0xEC0,0xF3C,0xF9A,0xFDA,0xFFA,0xFFA,0xFDA,0xF9A
,0xF3C,0xEC0,0xE29,0xD79,0xCB2,0xBD9,0xAF1,0x9FC,0x900,0x7FF,0x6FE,0x602,0x50D,0x425,0x34C,0x285
,0x1D5,0x13E,0x0C2,0x064,0x024,0x004,0x004,0x024,0x064,0x0C2,0x13E,0x1D5,0x285,0x34C,0x425,0x50D
,0x602,0x6FE};

//const uint16_t Sine12bit[128] = {
//2148,2249,2349,2448,2546,2643,2738,2832,2924,3013,3101,
//        3186,3268,3347,3423,3496,3565,3631,3693,3751,3805,3854,
//        3899,3940,3976,4008,4035,4057,4074,4086,4094,4095,4094,
//        4086,4074,4057,4035,4008,3976,3940,3899,3854,3805,3751,
//        3693,3631,3565,3496,3423,3347,3268,3186,3101,3013,2924,
//        2832,2738,2643,2546,2448,2349,2249,2148,2048,1948,1847,
//        1747,1648,1550,1453,1358,1264,1172,1083,995,910,828,749,
//        673,600,531,465,403,345,291,242,197,156,120,88,61,39,22,
//        10,2,0,2,10,22,39,61,88,120,156,197,242,291,345,403,465,531,
//        600,673,749,828,910,995,1083,1172,1264,1358,1453,1550,1648,
//        1747,1847,1948,2048};

int main()
{
  LED_Init(); //³õʼ»¯LED
  DAC_DMA_Configuration();
	ADC1_Init();
	CAN_Configuration();
	TIM3_Base_Init(100);  //1s=10000  10ºÁÃë²É¼¯Ò»´ÎÊý¾Ý
	fv=0;
	fv2=0;
	fv2_falg=0;
	timer_value=0;
	ii=0;
	xl=0;

	delay_ms(2500);							//Ô­°æÑÓʱ2500

	TxMessage.StdId=210;        //´Ë´¦ÐÞ¸ÄcanID ¼ÆÖá°åµÄ
	TxMessage.ExtId=0;                          
	TxMessage.IDE=CAN_ID_STD;
	TxMessage.RTR=CAN_RTR_DATA;//Êý¾ÝÖ¡
	TxMessage.DLC=8;//Êý¾Ý³¤¶È8B
	JZdata[2]=0x10;
	JZdata[6]=0x0c;
	
//	TxMessage_1.StdId=212;        //´Ë´¦ÐÞ¸ÄcanID Õ¼ÓóöÇå°å×ÓCANID
//	TxMessage_1.ExtId=0;                          
//	TxMessage_1.IDE=CAN_ID_STD;
//	TxMessage_1.RTR=CAN_RTR_DATA;//Êý¾ÝÖ¡
//	TxMessage_1.DLC=8;//Êý¾Ý³¤¶È8B
	
	a_num=0;
	b_num=0;
	self_checking();
	
while(1)
 {
 
	 if(fv==1)
	 {	
	   	 ADC1_ConvertedValue=0;						//ADC1 ת»»Öµ
		   ADC2_ConvertedValue=0; 		 			//ADC2 ת»»Öµ
		 ii++;															//¿´ÃŹ·
		 timer_value++;											//Ñ­»·²É¼¯10ºó£¬
		 for(i=0;i<50;i++)									//ÀÛ¼Æ50´ÎADCת»»Öµ
		 {
	     ADC1_ConvertedValue+=(adc1data[i]&0x0000ffff);	//u32 Êý×éµÍ16λ  ADC1µÄת»»Öµ
			 ADC2_ConvertedValue+=(adc1data[i]>>16);				//u32 Êý×é¸ß16λ  ADC2µÄת»»Öµ
		 }
		 	 ADC1_ConvertedValue/=50;				//50´Îƽ¾ùÖµ
		   ADC2_ConvertedValue/=50; 				//
		
				if((ADC1_ConvertedValue>adjust3)||(ADC1_ConvertedValue<adjust1))
					{
						GPIOC->BRR=0x0040;	 //¿ªµÆ
						a_num=0x01;
						TxMessage_1.Data[2]=0x10;//¶ÔÓ¦ÏßȦ1,Õ¼Óõçѹ
					}
				else 
				{
					a_num=0x00;
					TxMessage_1.Data[2]=0x01;//¶ÔÓ¦ÏßȦ1,³öÇåµçѹ
					GPIOC->BSRR=0x0040;
				}
			 
				if((ADC2_ConvertedValue>adjust4)||(ADC2_ConvertedValue<adjust2))

					{
						 GPIOC->BRR=0x0080;
						 b_num=0x10;
						 TxMessage_1.Data[3]=0x10;//¶ÔÓ¦ÏßȦ2,Õ¼Óõçѹ
					}
				else	
				{
					b_num=0x00;
					TxMessage_1.Data[3]=0x01;//¶ÔÓ¦ÏßȦ2,³öÇåµçѹ
					GPIOC->BSRR=0x0080;	
				}
//									
					if((adjust3>a_com>adjust1)&&(adjust4>b_com>adjust2))
				{
						JZdata[timer_value+9]=0x00;
						a_num=0x00;
						b_num=0x00;
						GPIOC->BSRR=0x00c0; //Á½¸öµÆÃð
				}
			
				JZdata[timer_value+9]=a_num+b_num;
				
//				if(fv2_falg==1)		  //ÿ¸ô1S£¬·¢ËÍÕ¼ÓóöÇåµÄÊý¾Ý									
//				{
//						                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
//						TxMessage_1.Data[0]=0x11;   
//						TxMessage_1.Data[1]=0x00; 
//						TxMessage_1.Data[2]=TxMessage_1.Data[2]+0x00;
//						TxMessage_1.Data[3]=TxMessage_1.Data[3]+0x00;
//						TxMessage_1.Data[4]=0x00; 
//						TxMessage_1.Data[5]=0x00; 
//						TxMessage_1.Data[6]=0x00; 
//						TxMessage_1.Data[7]=0x00; 
//						CAN_Transmit(CAN1,&TxMessage_1);
//						fv2_falg=0;
//				}
				
			if(timer_value==10)
			{			
				timer_value=0;
			  xl++;
			  JZdata[0]=xl;
			  JZdata[1]=xl>>8;
			  crc=Get_Crc16(JZdata,20);
				TxMessage.Data[0]=0x7E;   
				TxMessage.Data[1]=JZdata[0]; 
				TxMessage.Data[2]=JZdata[1]; 
				TxMessage.Data[3]=JZdata[2]; 
				TxMessage.Data[4]=JZdata[3]; 
				TxMessage.Data[5]=JZdata[4]; 
				TxMessage.Data[6]=JZdata[5]; 
				TxMessage.Data[7]=JZdata[6]; 
				CAN_Transmit(CAN1,&TxMessage);
			
				TxMessage.Data[0]=JZdata[7];   
				TxMessage.Data[1]=JZdata[8]; 
				TxMessage.Data[2]=JZdata[9]; 
				TxMessage.Data[3]=JZdata[10]; 
				TxMessage.Data[4]=JZdata[11]; 
				TxMessage.Data[5]=JZdata[12]; 
				TxMessage.Data[6]=JZdata[13]; 
				TxMessage.Data[7]=JZdata[14]; 			  
				CAN_Transmit(CAN1,&TxMessage);
		
				TxMessage.Data[0]=JZdata[15];   
				TxMessage.Data[1]=JZdata[16]; 
				TxMessage.Data[2]=JZdata[17]; 
				TxMessage.Data[3]=JZdata[18]; 
				TxMessage.Data[4]=JZdata[19]; 
				TxMessage.Data[5]=crc; 
				TxMessage.Data[6]=crc>>8; 
				TxMessage.Data[7]=0x7F; 	 			
				CAN_Transmit(CAN1,&TxMessage);
				if(xl==60000){xl=0;}			
			}
			if(ii==50)
				{
						IWDG_ReloadCounter();
						GPIOC->BRR=0x0020;									//µçÔ´¹¤×÷ָʾµÆ					
				}
			if(ii==100){IWDG_ReloadCounter();
			           GPIOC->BSRR=0x0020;
			           ii=0;}
			fv=0;
	 }
 } 
}

void USB_LP_CAN1_RX0_IRQHandler(void)
{
	CAN_Receive(CAN1,CAN_FIFO0, &RxMessage1); 
//	DataValue=1;
//	if(RxMessage1.StdId==200){flash_flag=1;}
	CAN_ClearITPendingBit(CAN1,CAN_IT_FMP0); 
}

void USB_HP_CAN1_TX_IRQHandler(void) //CAN TX
{
    if (CAN_GetITStatus(CAN1,CAN_IT_TME)!= RESET)
    {
       CAN_ClearITPendingBit(CAN1,CAN_IT_TME);
    }
}
     
void TIM3_IRQHandler(void)   //TIM3ÖжÏ
{
	if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //¼ì²éÖ¸¶¨µÄTIMÖжϷ¢ÉúÓë·ñ:TIM ÖжÏÔ´ 
		{
	    TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //Çå³ýTIMxµÄÖжϴý´¦Àíλ:TIM ÖжÏÔ´ 
      fv=1;
			if(fv2_falg==0)fv2++;
			if(fv2==100)
			{
				fv2_falg=1;
				fv2=0;
			}
}
}

void self_checking(void)
{
   u8 i;
		for(i=0;i<50;i++)
		 {
	     ADC1_ConvertedValue+=(adc1data[i]&0x0000ffff);
			 ADC2_ConvertedValue+=(adc1data[i]>>16);
		 }
		 ADC1_ConvertedValue/=50;
		 ADC2_ConvertedValue/=50; 
		 adjust1=ADC1_ConvertedValue-20;    //Ô­°æÊÇ-100
		 adjust2=ADC2_ConvertedValue-20;		//Ô­°æÊÇ-100
		 adjust3=ADC1_ConvertedValue+20;    //
		 adjust4=ADC2_ConvertedValue+20;		//
}

void IWDG_Configuration(void)
{
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
	IWDG_SetPrescaler(IWDG_Prescaler_64);
	IWDG_SetReload(800);
	IWDG_ReloadCounter();
	IWDG_Enable();
}

void delay_us(u32 nTimer)
{
	u32 i=0;
	for(i=0;i<nTimer;i++){
		__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();
		__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();
		__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();
		__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();
		__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();
	}
}



void delay_ms(u32 nTimer)
{
   u32 i=1000*nTimer;
   delay_us(i);
}
  • 写回答

2条回答 默认 最新

  • BraveNeoQQ 2021-04-09 13:42
    关注

    用的是STM32F103RCT6

    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题