STM32F407VGT6的485通信程序【SP34 下载本文

内容发布更新时间 : 2024/5/20 12:02:04星期一 下面是文章的全部内容请认真阅读。

【SP3485芯片&xx接收】

本例程为STM32F4XX(M4内核)的485通信程序,采用串口1发送和接收数据,中断接收,将接收到的数据重新发送出去。

主函数文件如下: #include \

/**********************************************************\\**文件名:**************************************

**库版本:*********

**工作环境:RealView MDK-ARM *********************

**作者:曾有根***************************************生成日期:2012-08-03 ************************************功能:RS485通过串口1发送,中断接收!将接收到*****的数据通过再次发送出去

*********************\\**********************************************************/extern void uart_init(void);

extern void USART1_SendByte(u8 Data);

extern unsigned char UART1_GetByte(u8 GetData); extern void delay(unsigned int dl); void delay(unsigned int dl) {

unsigned int i,y; for(i = 0; i < 5000; i++) {

for(y = 0; y < dl; y++);

1 / 7

} }

static void led_init(void) {

GPIO_InitTypeDef GPIO_InitStructure; /* Enable the GPIO_LED Clock */

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);/* Configure the GPIO_LED pin */

= GPIO_Pin_7 | GPIO_Pin_8 ; = GPIO_Mode_OUT; = GPIO_OType_PP; = GPIO_PuPd_UP; = GPIO_Speed_50MHz;

GPIO_Init(GPIOE, &GPIO_InitStructure); }

int main(void) {

uart_init(); led_init(); while (1) {

USART1_SendByte(0x12);

2 / 7

GPIO_SetBits(GPIOE, GPIO_Pin_7 ); //LED1灯闪烁,表示数据发送完成 delay(1000);

GPIO_ResetBits(GPIOE, GPIO_Pin_7 ); delay(1000); } }

串口配置程序,文件如下: #include \

extern void delay(unsigned int dl);

#define TX_485 GPIO_SetBits(GPIOA,GPIO_Pin_8); #define RX_485 GPIO_ResetBits(GPIOA,GPIO_Pin_8); void USART1_SendByte(u8 SendData) {

TX_485;//打开发送控制端

delay(10);//延时,这个必须加上,不加会导致数据出错 USART_SendData(USART1,SendData); //发送数据

while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); //等待数据发送完成 delay(10);

RX_485;//关闭发送控制端

3 / 7