STM32的485最简单例程.docx_第1页
STM32的485最简单例程.docx_第2页
STM32的485最简单例程.docx_第3页
STM32的485最简单例程.docx_第4页
STM32的485最简单例程.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

485最基本的半双工通信配置采用STM32F103ZET6串口3连接485芯片通信口,485芯片的A,B通过485转串口模块与电脑相连,完成在串口软件上输入输出功能。串口3,配置函数:void USART3_Config(void) GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);/ USART3_TX - PB10 , USART3_RX -PB11GPIO_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_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure);USART_InitStructure.USART_BaudRate = 115200; / 1200; USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No; /USART_Parity_Even;USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART3, &USART_InitStructure); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);#ifdef PDU_USART3_DMAUSART_ITConfig(USART3, USART_IT_IDLE, ENABLE);#else/ Enable the USART Receive interrupt: this interrupt is generated when the /USART3 receive data register is not empty/USART_ClearITPendingBit(USART3, USART_IT_TC);USART_ClearFlag(USART3,USART_FLAG_TC);USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);USART_ITConfig(USART3, USART_IT_TC, ENABLE);/USART_ITConfig(USART3, USART_IT_TXE, ENABLE);USART_ClearFlag(USART3,USART_FLAG_TC);#endif USART_Cmd(USART3, ENABLE);USART_ClearFlag(USART3,USART_FLAG_TC);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOE, &GPIO_InitStructure);RS_485_TX_ENABLE();PUTCHAR_PROTOTYPE /* Place your implementation of fputc here */ /* e.g. write a character to the USART */ USART_SendData(USART3, (uint8_t) ch);/USART_SendData(USART1,(uint8_t)ch); /* Loop until the end of transmission */ /while (USART_GetFlagStatus(USART1, USART_FLAG_TC) = RESET)while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) = RESET) return ch;中断函数:void USART3_IRQHandler(void)if(USART_GetITStatus(USART3, USART_IT_IDLE) != RESET) USART_ClearITPendingBit(USART3, USART_IT_IDLE);if(USART_GetFlagStatus(USART3, USART_FLAG_RXNE)!=RESET) USART_ClearFlag(USART3,USART_FLAG_RXNE); TIM3_Init(1000, 7200); BLUE_ON(); if(cnt=32) cnt=0; else datacnt=USART_ReceiveData(USART3); cnt+; if (USART_GetITStatus(USART3, USART_IT_TC) != RESET) |(USART_GetITStatus(USART3, USART_IT_TXE) != RESET) )USART_ClearITPendingBit(USART3, USART_IT_TC);USART_ClearITPendingBit(USART3, USART_IT_TXE);/ USART_SendData(USART3, 0XFFFF);void TIM3_IRQHandler(void) if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) TIM_ClearITPendingBit(TIM3, TIM_IT_Update);TIM3_DeInit(); BLUE_OFF();/ printf(rn %x,cnt); cnt=0; static void NVIC_TIM3Configuration(void) NVIC_InitTypeDef NVIC_InitStructure; /* Set the Vector Table base address at 0x08000000 */ /NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0000); /* Enable the TIM3 gloabal Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);定时器:void TIM3_Init(uint16_t tcon, uint16_t psc) TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; / TIM3 clock enable RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);/ reset timerTIM_DeInit(TIM3); / Time base configuration/ value to reload TIM_TimeBaseStructure.TIM_Period = (tcon - 1); / pre-scaler value against system clock TIM_TimeBaseStructure.TIM_Prescaler = (psc - 1); / scaler value against system clock TIM_TimeBaseStructure.TIM_ClockDivision = 0; / counting mode TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; / init timer TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); / Clear TIM3 update pending flag TIM_ClearITPendingBit(TIM3, TIM_IT_Update); / TIM IT enable of over-counting TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); / config timers interruption function NVIC_TIM3Configuration();/ Enable TIM3 counter TIM_Cmd(TIM3, ENABLE);void TIM3_DeInit(void)/ Disable TIM3 counter TIM_Cmd(TIM3, DISABLE);/ Reset timerTIM_DeInit(TIM3);/ Disable TIM3 clock RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, DISABLE);/tim3_stat = 0x00;主函数:#ifdef _GNF_#ifdef _GNUC_ /* With GCC/RAISONANCE, small printf (option LD Linker-Libraries-Small printf set to Yes) calls _io_putchar() */ #define PUTCHAR_PROTOTYPE int _io_putchar(int ch)#else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)#endif /* _GNUC_ */#endif /* _GNF_ */void Delay(uint32_t tick) while(tick-) ;/* Private function prototypes -*/extern unsigned char datasize;extern volatile unsigned char cnt;/* Function Name : main* Description : Main program* Input : None* Output : None* Return : None* Attention : None*/int main(void) /*USART configuration*/ USART3_Config(); RED_ON(); BLUE_ON(); GREEN_ON(); Delay(100000); BLUE_OFF

温馨提示

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

评论

0/150

提交评论