STM32的485最简单例程.docx

上传人:rrsccc 文档编号:10415436 上传时间:2021-05-15 格式:DOCX 页数:7 大小:11.28KB
返回 下载 相关 举报
STM32的485最简单例程.docx_第1页
第1页 / 共7页
STM32的485最简单例程.docx_第2页
第2页 / 共7页
STM32的485最简单例程.docx_第3页
第3页 / 共7页
STM32的485最简单例程.docx_第4页
第4页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《STM32的485最简单例程.docx》由会员分享,可在线阅读,更多相关《STM32的485最简单例程.docx(7页珍藏版)》请在三一文库上搜索。

1、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_

2、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.GP

3、IO_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_St

4、opBits = 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_PriorityGroupC

5、onfig(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(US

6、ART3, 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(USAR

7、T3, USART_IT_TC, ENABLE);/USART_ITConfig(USART3, USART_IT_TXE, ENABLE);USART_ClearFlag(USART3,USART_FLAG_TC);#endifUSART_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_I

8、nitStructure.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_SendDa

9、ta(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

10、(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;elsedatacnt=USART_ReceiveData(USART3);cnt+;if (USART_GetITStatus(USART3, USART_IT_TC) != RESET) | (USART_GetITStatus(USART3, USART_I

11、T_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,

12、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_IR

13、QChannelPreemptionPriority = 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_TimeBaseInitTypeDefTIM_TimeBaseStructure;/ TIM3 clock enableRCC_APB1PeriphClockCmd(RCC_APB

14、1Periph_TIM3, ENABLE);/ reset timerTIM_DeInit(TIM3);/ Time base configuration/ value to reloadTIM_TimeBaseStructure.TIM_Period = (tcon - 1);/ pre -scaler value against system clockTIM_TimeBaseStructure.TIM_Prescaler = (psc - 1);/ scaler value against system clockTIM_TimeBaseStructure.TIM_ClockDivisi

15、on = 0;/ counting modeTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; / init timerTIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);/ Clear TIM3 update pending flagTIM_ClearITPendingBit(TIM3, TIM_IT_Update);/ TIM IT enable of over -countingTIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);/ config

16、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 clockRCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, DISABLE);/tim3_stat = 0x00;主函数:#ifdef _G

17、NF_#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)whi

18、le(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();RED_OFF();GREEN_OFF();/* Infinite loop */while (1)uint8_t i=0;RS_485_TX_ENABLE();printf(rn up up day! );for(i=0;i50;i+)GREEN_ON();Delay(500000);GREEN_OFF();Delay(500000);RS_485_RX_ENABLE();while(data0=0x00)RED_ON();Delay(500000);RED_OFF();Delay(500000);memset(data,0,size);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1