- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
stm32实验CAN收发实验
#include sys.h#include usart.h#include delay.h#include led.h #include beep.h#include key.h#include exti.h#include wdg.h #include timer.h#include tpad.h#include oled.h#include lcd.h#include usmart.h#include rtc.h#include wkup.h#include adc.h #include dac.h #include dma.h #include 24cxx.h #include flash.h #include rs485.h #include can.h int main(void){u8 key;u8i=0,t=0;u8cnt=0;u8canbuf[8];u8 res;u8 mode=1;//CAN工作模式;0,普通模式;1,环回模式Stm32_Clock_Init(9);//系统时钟设置uart_init(72,9600);//串口初始化为9600delay_init(72);//延时初始化LED_Init();//初始化与LED连接的硬件接口LCD_Init();//初始化LCDusmart_dev.init(72);//初始化USMARTKEY_Init();//按键初始化CAN_Mode_Init(1,8,7,5,mode);//CAN初始化,波特率450Kbps 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,2012/9/11);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==KEY_RIGHT)//KEY0按下,发送一次数据{for(i=0;i8;i++){canbuf[i]=cnt+i;//填充发送缓冲区if(i4)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);//发送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==KEY_UP)//WK_UP按下,改变CAN的工作模式{mode=!mode;CAN_Mode_Init(1,8,7,5,mode);//CAN普通模式初始化,普通模式,波特率450KbpsPOINT_COLOR=RED;//设置字体为红色if(mode==0)//普通模式,需要2个开发板{LCD_ShowString(60,130,200,16,16,Nnormal Mode );}else //回环模式,一个开发板就可以测试了.{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;ikey;i++){if(i4)LCD_ShowxNum(60+i*32,270,canbuf[i],3,16,0X80);//显示数据else LCD_Sho
文档评论(0)