久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: STM32F427的TP8485芯片RS485和PC通信源程序 [打印本頁]

作者: 勒布朗哎騷韋    時間: 2018-12-1 15:41
標題: STM32F427的TP8485芯片RS485和PC通信源程序
親測有效,同PC間通信。
【*】 程序簡介
-工程名稱:工程模版
-實驗平臺: STM32F427 同步控制器
-MDK版本:
-ST固件庫版本:

【*】 時鐘

A.晶振:
-外部高速晶振:25MHz
-RTC晶振:32.768KHz

B.各總線運行時鐘:
-系統時鐘 = SYCCLK = AHB1 = 180MHz
-APB2 = 90MHz
-APB1 = 45MHz

C.浮點運算單元:
  使能

單片機源程序如下:
  1. #include "stm32f4xx.h"
  2. #include "stm32f4xx_usart.h"
  3. uint8_t rx_flag=0;
  4. uint8_t rx_buff[100]={0x00,0x00};
  5. uint8_t i=0,j=0;
  6. uint8_t n=5;


  7. void USART_INIT(void);
  8. void nvic_configuration(void);
  9. int main(void)
  10. {       
  11.         USART_INIT();
  12.         GPIO_SetBits(GPIOA, GPIO_Pin_6);       
  13.         USART_SendData(USART2, 66);
  14.         while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
  15.         USART_SendData(USART2, 67);
  16.         while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
  17.         GPIO_ResetBits(GPIOA, GPIO_Pin_6);       
  18.   while(1)
  19.         {
  20.                 if(rx_flag==1)
  21.                 {                       
  22.                         rx_buff[i++]=USART_ReceiveData(USART2);
  23.                         rx_flag=0;
  24.                 }
  25.                 if(i==n)
  26.                 {
  27.                         GPIO_SetBits(GPIOA, GPIO_Pin_6);
  28.                         i=0;
  29.                         for(j=0;j<n;j++)
  30.                         {                                       
  31.                                 USART_SendData(USART2, rx_buff[j]);
  32.                                 while(USART_GetFlagStatus(USART2,  USART_FLAG_TC)==RESET);
  33.                         }
  34.                         GPIO_ResetBits(GPIOA, GPIO_Pin_6);       
  35.                 }
  36.                
  37.         }
  38. }
  39. void USART_INIT(void)
  40. {
  41. //        GPIO initiallize
  42.         GPIO_InitTypeDef GPIO_InitStructure;
  43.        
  44.         RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOA ,ENABLE); //使能外設時鐘AHB1                                                                                                         
  45.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;           //        A6   control singal        
  46.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   //實際上就是推挽輸出
  47.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  48.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
  49.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  50.         GPIO_Init(GPIOA, &GPIO_InitStructure);
  51.         GPIO_ResetBits(GPIOA, GPIO_Pin_6);       

  52.         GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_USART2); //GPIOA2復用為USART2
  53.         GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_USART2); //GPIOA3復用為USART2       
  54.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 |GPIO_Pin_3 ;  //Tx and Rx         
  55.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;     //alternate function
  56.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  57.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  58.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //low rate
  59.         GPIO_Init(GPIOA, &GPIO_InitStructure);
  60.        
  61.         ////USART initiallize
  62.         USART_InitTypeDef usart_2_initstructure;
  63.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//使能USART2時鐘 掛載在APB1外設時鐘上
  64.        
  65.         usart_2_initstructure.USART_BaudRate=9600;
  66.         usart_2_initstructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
  67.         usart_2_initstructure.USART_Mode=USART_Mode_Rx |USART_Mode_Tx;
  68.         usart_2_initstructure.USART_Parity=USART_Parity_No;
  69.         usart_2_initstructure.USART_StopBits=USART_StopBits_1;
  70.         usart_2_initstructure.USART_WordLength=USART_WordLength_8b;
  71.         USART_Init(USART2, &usart_2_initstructure);  
  72.   USART_Cmd(USART2, ENABLE);  //使能串口2
  73.        
  74.         //some flags and IT
  75.         USART_ClearFlag(USART2, USART_FLAG_TC);  //clear transmit flag               
  76.        
  77.         nvic_configuration();
  78.         USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//開啟相關中斷
  79. }
  80. //內嵌中斷向量控制器config
  81. void nvic_configuration()
  82. {
  83.                 //NVIC config and initiallize
  84.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  85.         NVIC_InitTypeDef NVIC_InitStructure;
  86.        
  87.         NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQn;
  88.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
  89.         NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
  90.         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE ;
  91.         NVIC_Init(&NVIC_InitStructure);       
  92. }
  93. void USART2_IRQHandler()
  94. {
  95.         if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
  96.         {
  97. //                        rx_buff[i++]=USART_ReceiveData(USART2);
  98.                 rx_flag=1;
  99.                 USART_ClearFlag(USART2, USART_FLAG_RXNE);
  100.         }
  101. }
復制代碼

所有資料51hei提供下載:
F427_USART2_485.rar (612.81 KB, 下載次數: 38)





作者: 勒布朗哎騷韋    時間: 2018-12-1 15:42
可以找我要硬件電路圖
作者: admin    時間: 2018-12-1 17:26
圖紙能上傳下嗎?點高級模式即可
作者: keiswin    時間: 2018-12-1 20:40
多謝了,我正要找的
作者: 勒布朗哎騷韋    時間: 2018-12-9 16:22
admin 發表于 2018-12-1 17:26
圖紙能上傳下嗎?點高級模式即可

不知截圖是否可以





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 伊人91在线| 久久国产高清视频 | 中文字幕精品一区二区三区精品 | 亚洲性视频网站 | 成人在线国产 | 综合第一页 | 日韩中文字幕视频在线 | xx视频在线观看 | 草久视频| 久久新视频 | 国产一区二区激情视频 | 成人精品一区二区 | 欧洲一区在线观看 | 亚洲一区二区三区久久久 | 国产精品国产精品国产专区不片 | 中文字幕一级毛片视频 | 亚洲第一色站 | 在线免费av观看 | 免费观看一级毛片视频 | 欧美精品在线免费观看 | 日韩在线播放av | 亚洲国产成人精品久久久国产成人一区 | 久色激情| 亚洲天堂久久新 | 国产一区二区在线免费播放 | 亚洲视频在线看 | 成人精品一区二区三区 | 在线啊v| www.久草.com | 国产精品久久久久久久久久免费看 | 成人国产精品久久久 | 欧美日韩国产一区二区三区 | 国产91久久久久蜜臀青青天草二 | 久久久国产一区二区三区 | 日韩免费在线观看视频 | 韩日精品在线观看 | 日韩精品一区二区三区久久 | 在线播放一区二区三区 | 少妇黄色| 精品久久久久久久久久 | 欧美在线亚洲 |