初级会员

- 积分
- 125
- 金钱
- 125
- 注册时间
- 2016-2-29
- 在线时间
- 41 小时
|
5金钱
原子哥及诸位大神,小弟于前些时日学习can通信实验,由于苦于只有一个探索者407开发板(can驱动芯片tja1050),在回环模式测试合格之后,想试一下双机通信,于是在网上购买了一个can转接板,芯片是stm32f103c8t6,驱动芯片是vp230。到手之后编写了103程序,测试回环合适,两个机子在单步状态下均观测了tx数据register和rx数据register,都可以看到有正确的数据变化。于是将双机连线,修改模式为normal。但是只能观测到数据发送,始终收不到数据。连续几日,颇为困恼。下面是我的程序,请原子哥和大家帮小弟看一下,到底是哪里出了问题。万分感谢。
407程序:#include"lwj_can.h"
#include"led.h"
#include"delay.h"
#include"usart.h"
u8 CAN1_Mode_Init(u8 tsjw,u8 tbs1,u8 tbs2,u16 brp,u8 mode)
{
GPIO_InitTypeDef GPIO_InitStructure;
CAN_InitTypeDef CAN_InitStructure;
CAN_FilterInitTypeDef CAN_FilterInitStructure;
#if CAN1_RX0_INT_ENABLE
NVIC_InitTypeDef NVIC_InitStructure;
#endif
//ê1Äüê±Öó
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1,ENABLE);
//GPIO¿ú3õê¼»ˉ
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AF;//¶Ë¿ú¸′óÃÄ£ê½
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11|GPIO_Pin_12;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
//òy½Å¸′óÃó3éäÅäÖÃ
GPIO_PinAFConfig(GPIOA,GPIO_PinSource11,GPIO_AF_CAN1);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource12,GPIO_AF_CAN1);
//CAN 3õê¼»ˉ
CAN_InitStructure.CAN_ABOM=DISABLE;//èí¼t×Ô¶ˉàëÏß1üàí
CAN_InitStructure.CAN_AWUM=DISABLE;//ËˉÃßÄ£ê½í¨1yèí¼t»½DÑ
CAN_InitStructure.CAN_BS1=tbs1;//Tbs1·¶Î§CAN_BS1_1tq ~CAN_BS1_16tq
CAN_InitStructure.CAN_BS2=tbs2;//Tbs2·¶Î§CAN_BS2_1tq ~ CAN_BS2_8tq
CAN_InitStructure.CAN_Mode=mode;//·¢ËíÄ£ê½ÇD»»
CAN_InitStructure.CAN_NART=ENABLE;//½ûÖ1±¨ÎÄ×Ô¶ˉ′«Ëí
CAN_InitStructure.CAN_Prescaler=brp;//·ÖÆμÏμêyÎabrp+1£»
CAN_InitStructure.CAN_RFLM=DISABLE;//±¨ÎÄ2»Ëø¶¨£¬DÂμĸ2¸Ç¾éμÄ
CAN_InitStructure.CAN_SJW=tsjw;//ÖØDÂí¬2½ìøÔ¾¿í¶è
CAN_InitStructure.CAN_TTCM=DISABLE;//·Çê±¼ä′¥·¢í¨DÅÄ£ê½
CAN_InitStructure.CAN_TXFP=DISABLE;//óÅÏè¼¶ó鱨Îıêê¶·û¾ö¶¨
CAN_Init(CAN1,&CAN_InitStructure);//3õê¼»ˉCAN1
CAN_FilterInitStructure.CAN_FilterNumber=0;//Ñ¡Ôñ1yÂËÆ÷×é0
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;//¼¤»î1yÂËÆ××é0
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//1yÂËÆ÷×é01Øáaμ½FIFO0
CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;//32λID£¨±êê¶·û£©
CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;//32λÆá±ÎÂ루ÑúÂ룩
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;//±êê¶·ûÑúÂëÄ£ê½
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;//ò»¸ö32λé¸Ñ¡Æ÷°üà¨ò»¸ö32λμıêê¶·û¼Ä′æÆ÷oíò»¸ö32λμÄÑúÂë¼Ä′æÆ÷
CAN_FilterInit(&CAN_FilterInitStructure);//3õê¼»ˉ1yÂËÆ÷
#if CAN1_RX0_INT_ENABLE
CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE);//FIFO0ÏûÏ¢1òoÅÖD¶ÏÔêDí.
NVIC_InitStructure.NVIC_IRQChannel = CAN1_RX0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; // Ö÷óÅÏè¼¶Îa1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // ′ÎóÅÏè¼¶Îa0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
#endif
return 0;
}
#if CAN1_RX0_INT_ENABLE //ê1ÄüRX0ÖD¶Ï
//ÖD¶Ï·tÎñoˉêy
void CAN1_RX0_IRQHandler(void)
{
CanRxMsg RxMessage;
int i=0;
CAN_Receive(CAN1, 0, &RxMessage);
for(i=0;i<8;i++)
printf("rxbuf[%d]:%d\r\n",i,RxMessage.Data);
}
#endif
u8 CAN1_Send_Msg(u8 *msg,u8 len)
{
u8 mbox;
u16 i;
CanTxMsg TxMessage;
TxMessage.DLC=len;
TxMessage.ExtId=0x0008;//óéóúÇ°ÃæéèÖÃ1yÂËÆ÷μÄÑúÂëλ0x0000£¬ò2¾íêÇËμ·¢Ëíêy¾Yμıêê¶·ûμÄËùóDλ¶¼±»Æá±Î£¬·¢Ëíê2Ã′¶¼¿éòÔ½óêüμ½¡£
TxMessage.IDE=0;//ê1óÃà©Õ1±êê¶·û
TxMessage.RTR=0;//·¢Ëíêy¾YÖ¡
TxMessage.StdId=0x0009;//±ê×¼±êê¶·û
for(i=0;i<len;i++){
TxMessage.Data=msg;}//·¢Ëíêy¾Y
mbox=CAN_Transmit(CAN1,&TxMessage);//Ñ¡Ôñò»¸ö¿ÕóêÏ䣬2¢½«ID£¬DLCoí·¢Ëíêy¾Y×°èëóêÏ䣬í¬ê±·μ»Ø±»ê1óÃμÄóêÏänumber
while((CAN_TransmitStatus(CAN1,mbox)==CAN_TxStatus_Failed)&&(i<0xfff))i++;//èç1ûûóD·¢Ëííê3飬Ôòμè′y¼ìDø·¢Ëí
if(i>=0xfff)return 0;
return 1;
}
u8 CAN1_Receive_Msg(u8 *buf)
{
u32 i;
CanRxMsg RxMessage;
if(CAN_MessagePending(CAN1,CAN_FIFO0)==0)return 0;//fifoóêÏä½óêÕ×′쬱êÖ¾£¬·μ»Øpending_1»òpending_2»òpending_3
//£¬èç1û·μ»Ø0Ôò±íê¾Ã»óDêÕμ½êy¾Y
CAN_Receive(CAN1,CAN_FIFO0,&RxMessage);//½óêÕêy¾Yμ½fifo0óêÏ䣬2¢½«êy¾Y·ÅÔúRxMessage.data
for(i=0;i<RxMessage.DLC;i++)
buf=RxMessage.Data;//½«êy¾Y·Åμ½êy¾Y»o3åbufÖD
return RxMessage.DLC;//·μ»Ø½óêÕêy¾YμÄ3¤¶è
}
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "key.h"
#include "lwj_can.h"
//ALIENTEK ì½Ë÷ÕßSTM32F407¿a·¢°å êμÑé27
//CANí¨DÅêμÑé-¿aoˉêy°æ±¾
//¼¼êõÖ§3Ö£owww.openedv.com
//ìÔ±|μêÆì£ohttp://eboard.taobao.com
//1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾
//×÷ÕߣoÕyμãÔ-×ó @ALIENTEK
int main(void)
{
u8 key=0,key1=0;
u8 i=0,t=0;
u8 cnt=0;
u8 canbuf[8]={0};
u8 res=0;
u8 mode=0;//CAN1¤×÷Ä£ê½;0,ÆÕí¨Ä£ê½;1,»·»ØÄ£ê½
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÏμí3ÖD¶ÏóÅÏè¼¶·Ö×é2
delay_init(168); //3õê¼»ˉÑóê±oˉêy
uart_init(115200); //3õê¼»ˉ′®¿ú2¨ìØÂêÎa115200
LED_Init(); //3õê¼»ˉLED
LCD_Init(); //LCD3õê¼»ˉ
KEY_Init(); //°′¼ü3õê¼»ˉ
CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,6,mode);//CAN3õê¼»ˉ»·»ØÄ£ê½,2¨ìØÂê500Kbps
POINT_COLOR=GREEN;//éèÖÃ×ÖìåÎaoìé«
LCD_ShowString(40,50,200,16,16,"Explorer STM32F4");
LCD_ShowString(30,70,200,16,16,"liweijie_can");
LCD_ShowString(30,90,200,16,16,"LanzhouJiaotong University");
LCD_ShowString(30,110,200,16,16,"2016/1/15");
LCD_ShowString(30,130,200,16,16,"LoopBack Mode");
LCD_ShowString(30,150,200,16,16,"KEY0:Send WK_UP:Mode");//ÏÔê¾ìáê¾DÅÏ¢
POINT_COLOR=BLUE;//éèÖÃ×ÖìåÎaà¶é«
LCD_ShowString(30,170,200,16,16,"Count:"); //ÏÔê¾μ±Ç°¼ÆêyÖμ
LCD_ShowString(30,190,200,16,16,"Send Data:"); //ìáê¾·¢ËíμÄêy¾Y
LCD_ShowString(30,250,200,16,16,"Receive Data:"); //ìáê¾½óêÕμ½μÄêy¾Y
while(1)
{
key=KEY_Scan(0);
if(key==KEY0_PRES)//KEY0°′ÏÂ,·¢Ëíò»′Îêy¾Y
{
for(i=0;i<8;i++)
{
canbuf=cnt+i;//ìî3ä·¢Ëí»o3åÇø
if(i<4)LCD_ShowxNum(30+i*32,210,canbuf,3,16,0X80); //ÏÔê¾êy¾Y
else LCD_ShowxNum(30+(i-4)*32,230,canbuf,3,16,0X80); //ÏÔê¾êy¾Y
//POINT_COLOR=YELLOW;//éèÖÃ×ÖìåÎaà¶é«
}
res=CAN1_Send_Msg(canbuf,8);//·¢Ëí8¸ö×Ö½ú £¬·¢Ëí3é1|·μ»Ø1.ê§°ü·μ»Ø0.
if(res)LCD_ShowString(30+80,190,200,16,16,"Failed"); //ìáê¾·¢Ëíê§°ü£¬
else LCD_ShowString(30+80,190,200,16,16,"OK "); //ìáê¾·¢Ëí3é1|
}else if(key==WKUP_PRES)//WK_UP°′Ï£¬¸Ä±äCANμÄ1¤×÷Ä£ê½
{
mode=!mode;
CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,6,mode); //CANÆÕí¨Ä£ê½3õê¼»ˉ,ÆÕí¨Ä£ê½,2¨ìØÂê500Kbps
POINT_COLOR=RED;//éèÖÃ×ÖìåÎaoìé«
if(mode==0)//ÆÕí¨Ä£ê½£¬Dèòa2¸ö¿a·¢°å
{
LCD_ShowString(30,130,200,16,16,"Nnormal Mode ");
}else //»Ø»·Ä£ê½,ò»¸ö¿a·¢°å¾í¿éòÔ2aêÔáË.
{
LCD_ShowString(30,130,200,16,16,"LoopBack Mode");
}
POINT_COLOR=RED;//éèÖÃ×ÖìåÎaà¶é«
}
key1=CAN1_Receive_Msg(canbuf);//½óêü3é1|·μ»Ø½óêüêy¾Y3¤¶èRxMessage.DLC
if(key1)//½óêÕμ½óDêy¾Y
{
LCD_Fill(30,270,160,310,YELLOW);//Çå3y֮ǰμÄÏÔê¾
for(i=0;i<key;i++)
{
if(i<4)LCD_ShowxNum(30+i*32,270,canbuf,3,16,0X80); //ÏÔê¾êy¾Y
else LCD_ShowxNum(30+(i-4)*32,290,canbuf,3,16,0X80); //ÏÔê¾êy¾Y
}
}
t++;
delay_ms(10);
if(t==20)
{
LED0=!LED0;//ìáê¾Ïμí3ÕyÔúÔËDD
t=0;
cnt++;
LCD_ShowxNum(30+48,170,cnt,3,16,0X80); //ÏÔê¾êy¾Y
}
}
}
103c8t6程序
#include"delay.h"
#include"sys.h"
#include"usart.h"
#include"can_lwj.h"
u8 CAN_Mode_Init(u8 tsjw,u8 tbs1,u8 tbs2,u16 brp,u8 mode)
{
GPIO_InitTypeDef GPIO_InitStructure;
CAN_InitTypeDef CAN_InitStructre;
CAN_FilterInitTypeDef CAN_FilterInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//ê1ÄüGPIOBê±Öó
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1,ENABLE);//ê1Äücanê±Öó
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//½óêüòy½ÅλéÏà-êäèë
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//·¢Ëíòy½Å¸′óÃλíÆí죬2»óÃÖØD inAFConfig();
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
//canÅäÖÃ
CAN_InitStructre.CAN_ABOM=DISABLE;//èí¼t×Ô¶ˉàëÏß1üàí
CAN_InitStructre.CAN_AWUM=DISABLE;//ËˉÃßÄ£ê½í¨1yèí¼t»½DÑ£¨Çå3ycan¡a¡amcrμÄsleep룩
CAN_InitStructre.CAN_Mode=mode;
CAN_InitStructre.CAN_NART=ENABLE;//½ûÖ1±¨ÎÄ×Ô¶ˉ·¢Ëí
CAN_InitStructre.CAN_RFLM=DISABLE;//±¨ÎÄ2»Ëø¶¨£¬DÂμĸ2¸Ç¾éμÄ
CAN_InitStructre.CAN_TTCM=DISABLE;//·Çê±¼ä′¥·¢í¨DÅÄ£ê½
CAN_InitStructre.CAN_TXFP=DISABLE;//±¨ÎÄóÅÏè¼¶ó鱨Îıêê¶·û¾ö¶¨
//2¨ìØÂêéèÖÃ
CAN_InitStructre.CAN_BS1=tbs1;
CAN_InitStructre.CAN_BS2=tbs2;
CAN_InitStructre.CAN_Prescaler=brp;
CAN_InitStructre.CAN_SJW=tsjw;
CAN_Init(CAN1,&CAN_InitStructre);
//filterÅäÖÃ
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;//¼¤»îé¸Ñ¡Æ÷×é0
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//½«fifo01Øáaμ½é¸Ñ¡Æ÷
CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;
CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterNumber=0;
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
CAN_FilterInit(&CAN_FilterInitStructure);
return 0;
}
u8 CAN_Send_Msg(u8 *msg,u8 len)
{
u8 mbox;
u16 i;
CanTxMsg TxMessage;
TxMessage.DLC=len;
TxMessage.ExtId=0x0008;//óéóúÇ°ÃæéèÖÃ1yÂËÆ÷μÄÑúÂëλ0x0000£¬ò2¾íêÇËμ·¢Ëíêy¾Yμıêê¶·ûμÄËùóDλ¶¼±»Æá±Î£¬·¢Ëíê2Ã′¶¼¿éòÔ½óêüμ½¡£
TxMessage.IDE=0;//ê1óÃà©Õ1±êê¶·û
TxMessage.RTR=0;//·¢Ëíêy¾YÖ¡
TxMessage.StdId=0x0009;//±ê×¼±êê¶·û
for(i=0;i<len;i++){
TxMessage.Data=msg;}//·¢Ëíêy¾Y
mbox=CAN_Transmit(CAN1,&TxMessage);//Ñ¡Ôñò»¸ö¿ÕóêÏ䣬2¢½«ID£¬DLCoí·¢Ëíêy¾Y×°èëóêÏ䣬í¬ê±·μ»Ø±»ê1óÃμÄóêÏänumber
while((CAN_TransmitStatus(CAN1,mbox)==CAN_TxStatus_Failed)&&(i<0xfff))i++;//èç1ûûóD·¢Ëííê3飬Ôòμè′y¼ìDø·¢Ëí
if(i>=0xfff)return 0;//·¢Ëíê§°ü·μ»Ø1
return 1;//·¢Ëí3é1|·μ»Ø0
}
u8 CAN_Receive_Msg(u8 *buf)
{
u32 i;
CanRxMsg RxMessage;
if(CAN_MessagePending(CAN1,CAN_FIFO0)==0)return 0;//fifoóêÏä½óêÕ×′쬱êÖ¾£¬·μ»Øpending_1»òpending_2»òpending_3£¬èç1û·μ»Ø0Ôò±íê¾Ã»óDêÕμ½êy¾Y
CAN_Receive(CAN1,CAN_FIFO0,&RxMessage);//½óêÕêy¾Yμ½fifo0óêÏ䣬2¢½«êy¾Y·ÅÔúRxMessage.data
for(i=0;i<RxMessage.DLC;i++)
buf=RxMessage.Data;//½«êy¾Y·Åμ½êy¾Y»o3åbufÖD
return RxMessage.DLC;//·μ»Ø½óêÕêy¾YμÄ3¤¶è
}
#include"delay.h"
#include"sys.h"
#include"can_lwj.h"
int main()
{
u8 key=0;
u8 i=0;
u8 canbuf[8];
u8 canbuf103[8];
u8 res=0;
u8 mode=CAN_Mode_Normal;//CAN1¤×÷Ä£ê½;CAN_Mode_Normal(0)£oÆÕí¨Ä£ê½£¬CAN_Mode_LoopBack(1)£o»·»ØÄ£ê½
//ÅäÖÃDèòaóÃμ½μİ′¼ü¼°Ö¸ê¾μÆ
GPIO_InitTypeDef GPIO_InitStructure;
delay_init();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//ê1ÄüGPIOAê±Öó
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//ê1ÄüGPIOBê±Öó
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//ÏÂà-êäèë
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;//
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);//éèÖÃp1.0Îa°′¼ü
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15|GPIO_Pin_14|GPIO_Pin_13|GPIO_Pin_12;//¶Ôó|p0.0,p0.1,p0.2,p0.3
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);//éèÖÃp0.0£¬p0.1£¬p0.2,p0.3ÎaÖ¸ê¾μÆ
CAN_Mode_Init(CAN_SJW_1tq,CAN_BS2_8tq,CAN_BS1_9tq,4,mode);//éèÖÃÎaÕy3£Ä£ê½£¬2¨ìØÂê500kbps
GPIO_SetBits(GPIOB,GPIO_Pin_15);//éèÖà B8¼′p0^0Îa¸ßμçÆ½£¬ìáê¾Ïμí3ÕyÔúÔËDD
for(i=0;i<8;i++){canbuf=i;}
while(1)
{
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0)//ÅD¶Ï A0êÇ·ñ°′Ï£¬ò2¼′p1^0£¬μíμçÆ½óDD§
{
delay_ms(10);
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0)//Ïû¶¶
{
res=CAN_Send_Msg(canbuf,8);//·¢Ëíêy¾Y£¬èç1û·¢Ëí3é1|Ôò·μ»Ø1£¬ê§°ü·μ»Ø0
delay_ms(500);
if(!res)GPIO_SetBits(GPIOB,GPIO_Pin_14);//·¢Ëíê§°ü£¬éèÖÃp0^1Îa¸ßμçÆ½£¬μãááled
else{ u8 t;
for(t=0;t<3;t++)//·¢Ëí3é1|£¬p0^2éá˸3ÏÂ
{
GPIO_ResetBits(GPIOB,GPIO_Pin_13);
delay_ms(500);
GPIO_SetBits(GPIOB,GPIO_Pin_13);
delay_ms(500);
if(t==3)t=0;
}
GPIO_ResetBits(GPIOB,GPIO_Pin_13);
}
}
}
key=CAN_Receive_Msg(canbuf103);//½óêÕêy¾Y£¬2¢Çò½«·μ»ØμÄêy¾Y3¤¶è¸3Öμ¸økey
if(key){//èç1û½óêÕμ½êy¾Y
u8 t;
for(t=0;t<2;t++)//407·¢Ëí3é1|103½óêü3é1|£¬p0^3éá˸5ÏÂ
{
GPIO_ResetBits(GPIOB,GPIO_Pin_12);
delay_ms(1000);
GPIO_SetBits(GPIOB,GPIO_Pin_12);
delay_ms(1000);
if(t==2)t=0;
}
GPIO_ResetBits(GPIOB,GPIO_Pin_12);
}
}
}
等待大家帮小弟这个大忙。大家相互学习。期待中。。。。。
|
|