STM32 带can通讯 485 串口 232串口通讯 中文件资料 最小系统说明书_第1页
STM32 带can通讯 485 串口 232串口通讯 中文件资料 最小系统说明书_第2页
STM32 带can通讯 485 串口 232串口通讯 中文件资料 最小系统说明书_第3页
STM32 带can通讯 485 串口 232串口通讯 中文件资料 最小系统说明书_第4页
STM32 带can通讯 485 串口 232串口通讯 中文件资料 最小系统说明书_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

深圳轩微胜电子科技STM32全功能工控板最小系统板STM32F103C8T6最小系统带CAN485232说明书目录:全功能STM32工控系统板最小系统板功能介绍全功能STM32工控系统板最小系统板原理图解析全功能STM32工控系统板最小系统板配套资料can程序设计源代码和485程序设计源代码5、总结6、公司信息全功能STM32工控系统板介绍:STM32最小系统板主要协助广大工程师与学生在产品调试、新产品开发,样机测试,参加大赛、毕业设计等领域的应用和开发,全功能STM32工控系统板最小系统板的主要特点有:全功能通信系统:集成CAN通讯,485通讯,232串口通讯于一身,方便各种通信的切换使用。标准下载口:国际标准的Jlink下载口,同时兼容通信程序下载,便捷可靠。宽电源接口:适应工控需求的电源,无论在什么系统上应用,系统自动识别电源进行调整,不需要外接电源,方便应用。工业应用级布线,采用多层板设计,公共电源和地完全隔离,加大了过载能力,抗干扰能力强。体积小,方便安装应用跳帽设计,方便多重状态组合图一:功能原理图/item.htm?spm=a1z10.1-c.w4004-9605616956.6.v1FXtM&id=43719925208全功能STM32工控系统板原理图解析:2.1按键与LED电路:2.2CAN接口电路:2.3485接口电路:2.4扩展电源接口:2.5IO接口:2.6JTAG电路2.7主控CPU电路:2.8复位电路:2.9电源电路:2.10启动引导电路:全功能STM32工控系统板最小系统板配套资料:配套350MB资料,包括Stm32系统详解,Stm32各种详细实验源代码和各类芯片的技术资料,程序设计的技术资料can程序源代码和485程序源代码4.1CAN源代码#ifndef__CAN_H#define __CAN_H#include"stm32f10x.h"voidCAN_INIT(void);voidcan_tx(u8Data1,u8Data2);voidcan_rx(void);voidCAN_NVIC_Configuration(void);voidCAN_GPIO_Config(void);#endif/*__CAN_H*//*****************************************文件名:can.c*描述:CAN测试应用函数库。*实验平台:MINISTM32开发板基于STM32F103C8T6*硬件连接:-----------------*| ||PB8-CAN-RX|*|PB9-CAN-TX|*||*-----------------*库版本:ST3.0.0 **********************************************************/#include"can.h"#include"led.h"#include"stdio.h"typedefenum{FAILED=0,PASSED=!FAILED}TestStatus;/*在中断处理函数中返回*/__IOuint32_tret=0;volatileTestStatusTestRx; /*CANRX0中断优先级配置*/voidCAN_NVIC_Configuration(void){NVIC_InitTypeDefNVIC_InitStructure; /*ConfiguretheNVICPreemptionPriorityBits*/ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); #ifdefVECT_TAB_RAM /*SettheVectorTablebaselocationat0x20000000*/ NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0); #else/*VECT_TAB_FLASH*/ /*SettheVectorTablebaselocationat0x08000000*/ NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0); #endif /*enablinginterrupt*/ NVIC_InitStructure.NVIC_IRQChannel=USB_LP_CAN1_RX0_IRQn;; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; NVIC_InitStructure.NVIC_IRQChannelSubPriority=0; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure);}/*CANGPIO和时钟配置*/voidCAN_GPIO_Config(void){GPIO_InitTypeDefGPIO_InitStructure;/*复用功能和GPIOB端口时钟使能*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB,ENABLE); /*CAN1模块时钟使能*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1,ENABLE);/*ConfigureCANpin:RX*/ //PB8GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //上拉输入GPIO_Init(GPIOB,&GPIO_InitStructure);/*ConfigureCANpin:TX*///PB9GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出GPIO_Init(GPIOB,&GPIO_InitStructure); //#defineGPIO_Remap_CANGPIO_Remap1_CAN1本实验没有用到重映射I/OGPIO_PinRemapConfig(GPIO_Remap1_CAN1,ENABLE);}/* CAN初始化*/voidCAN_INIT(void){CAN_InitTypeDefCAN_InitStructure;CAN_FilterInitTypeDefCAN_FilterInitStructure;CanTxMsgTxMessage;/*CANregisterinit*/CAN_DeInit(CAN1); //将外设CAN的全部寄存器重设为缺省值CAN_StructInit(&CAN_InitStructure);//把CAN_InitStruct中的每一个参数按缺省值填入/*CANcellinit*/CAN_InitStructure.CAN_TTCM=DISABLE;//没有使能时间触发模式CAN_InitStructure.CAN_ABOM=DISABLE;//没有使能自动离线管理CAN_InitStructure.CAN_AWUM=DISABLE;//没有使能自动唤醒模式CAN_InitStructure.CAN_NART=DISABLE;//没有使能非自动重传模式CAN_InitStructure.CAN_RFLM=DISABLE;//没有使能接收FIFO锁定模式CAN_InitStructure.CAN_TXFP=DISABLE;//没有使能发送FIFO优先级CAN_InitStructure.CAN_Mode=CAN_Mode_Normal;//CAN设置为正常模式CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;//重新同步跳跃宽度1个时间单位CAN_InitStructure.CAN_BS1=CAN_BS1_3tq;//时间段1为3个时间单位CAN_InitStructure.CAN_BS2=CAN_BS2_2tq;//时间段2为2个时间单位CAN_InitStructure.CAN_Prescaler=60;//时间单位长度为60 CAN_Init(CAN1,&CAN_InitStructure);//波特率为:72M/2/60(1+3+2)=0.1即100K/*CANfilterinit*/CAN_FilterInitStructure.CAN_FilterNumber=1;//指定过滤器为1CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;//指定过滤器为标识符屏蔽位模式CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;//过滤器位宽为32位CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;//过滤器标识符的高16位值CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;// 过滤器标识符的低16位值CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;//过滤器屏蔽标识符的高16位值CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;// 过滤器屏蔽标识符的低16位值CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO0;//设定了指向过滤器的FIFO为0CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;//使能过滤器CAN_FilterInit(&CAN_FilterInitStructure);// 按上面的参数初始化过滤器/*CANFIFO0messagependinginterruptenable*/CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE);//使能FIFO0消息挂号中断}/*发送两个字节的数据*/voidcan_tx(u8Data1,u8Data2){CanTxMsgTxMessage;TxMessage.StdId=0x00; //标准标识符为0x00TxMessage.ExtId=0x0000;//扩展标识符0x0000TxMessage.IDE=CAN_ID_EXT;//使用标准标识符TxMessage.RTR=CAN_RTR_DATA;//为数据帧TxMessage.DLC=2; // 消息的数据长度为2个字节TxMessage.Data[0]=Data1;//第一个字节数据TxMessage.Data[1]=Data2;//第二个字节数据CAN_Transmit(CAN1,&TxMessage);//发送数据}/*USB中断和CAN接收中断服务程序,USB跟CAN公用I/O,这里只用到CAN的中断。*/voidUSB_LP_CAN1_RX0_IRQHandler(void){CanRxMsgRxMessage;RxMessage.StdId=0x00;RxMessage.ExtId=0x00;RxMessage.IDE=0;RxMessage.DLC=0;RxMessage.FMI=0;RxMessage.Data[0]=0x00;RxMessage.Data[1]=0x00;CAN_Receive(CAN1,CAN_FIFO0,&RxMessage);//接收FIFO0中的数据if((RxMessage.Data[0]==0x99)&&(RxMessage.Data[1]==0xbb)){LED1(0);LED2(1);}if((RxMessage.Data[0]==0x55)&&(RxMessage.Data[1]==0x77)){LED1(1);LED2(0);}}4.2485程序源代码/*****************************************文件名:main.c*描述:给相同两个MINI板下载此程序后,按下一个板子上的按键,可以点亮另一个板子*上对应的LED。两个板子不分主从。*实验平台:MINISTM32开发板基于STM32F103C8T6*库版本:ST3.0.0 **********************************************************/#include"stm32f10x.h"#include"usart1.h"#include"led.h"voidDelay(vu32nCount){for(;nCount!=0;nCount--);}/*按键管脚初始化*/voidKeyInit(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能外设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能外设时钟GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12|GPIO_Pin_13;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;//最高输出速率10MHzGPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//上拉输入GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;//最高输出速率10MHzGPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//上拉输入GPIO_Init(GPIOA,&GPIO_InitStructure);}/*检测是否有按键按下*/voidGetKey(void){if(Bit_RESET==GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)){Delay(1000000);//去抖动//去抖动if(Bit_RESET==GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)){while(Bit_RESET==GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)){;}//等待按键释放RS485_SendByte(0X02); LED1(1);LED2(1);}}if(Bit_RESET==GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)){Delay(1000000);//去抖动//去抖动if(Bit_RESET==GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)){while(Bit_RESET==GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)){;}//等待按键释放RS485_SendByte(0X01); LED1(1);LED2(1);}}}/*USART3接收中断配置*/voidNVIC_Configuration(void){NVIC_InitTypeDefNVIC_InitStructure;/*ConfiguretheNVICPreemptionPriorityBits*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);/*EnabletheUSART1Interrupt*/NVIC_InitStructure.NVIC_IRQChannel=USART3_IRQn;NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);}intmain(void){ SystemInit();//配置系统时钟为72M KeyInit(); //按键管脚初始化 LED_GPIO_Config();//LED管脚初始化 NVIC_Configuration();//USART3接收中断配置 USART3_int();//USART1配置 while(1){ GetKey();//检测是否有按键按下}}/*****************************************文件名:usart1.c*描述:配置USART3*实验平台:MINISTM32开发板基于STM32F103C8T6*硬件连接:------------------------*|PA9-USART1(Tx)|*|PA10-USART1(Rx)|*------------------------*库版本:ST3.0.0***********************************************************************************/#include"usart1.h" /*RE跟GPIOB1管脚相连*/#defineSet_REGPIO_SetBits(GPIOB,GPIO_Pin_1); #defineClr_REGPIO_ResetBits(GPIOB,GPIO_Pin_1);/*DE跟GPIOB0管脚相连*/#defineSet_DEGPIO_SetBits(GPIOB,GPIO_Pin_0);#defineClr_DEGPIO_ResetBits(GPIOB,GPIO_Pin_0);voidDelayNuS(unsignedinti){unsignedchart=0;for(;i>0;i--){for(t=0;t<2;t++){}}}/*配置USART3*/voidUSART3_Config(void){ GPIO_InitTypeDefGPIO_InitStructure; USART_InitTypeDefUSART_InitStructure; /*使能USART3时钟*/ RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能外设时钟 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOB,&GPIO_InitStructure); /*USART3使用IO端口配置*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; //浮空输入GPIO_Init(GPIOB,&GPIO_InitStructure);//初始化GPIOA /*USART3工作模式配置*/ USART_InitStructure.USART_BaudRate=9600; //波特率设置:9600 USART_InitStructure.USART_WordLength=USART_WordLength_8b; //数据位数设置:8位 USART_InitStructure.USART_StopBits=USART_StopBits_1; //停止位设置:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论