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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3195|回復: 2
打印 上一主題 下一主題
收起左側

STM32 rs485 DMA接收沒法進入中斷的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:393586 發表于 2018-12-4 11:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
用usart2配置485,發現發送沒問題,接收的時候沒法進入中斷。這是為什么呢?
  1. void USART2_UART_Init(uint32_t bound)
  2. {
  3.         HAL_UART_DeInit(&huart2);
  4.         __HAL_RCC_GPIOD_CLK_ENABLE();
  5.         __HAL_RCC_USART2_CLK_ENABLE();
  6.         __HAL_RCC_DMA1_CLK_ENABLE();               
  7.         
  8.         GPIO_Init2.Pin = GPIO_PIN_4;                     //485_RTS
  9.   GPIO_Init2.Mode =GPIO_MODE_AF_PP;
  10.   GPIO_Init2.Pull = GPIO_NOPULL;
  11.   GPIO_Init2.Speed = GPIO_SPEED_FREQ_HIGH;
  12.         GPIO_Init2.Alternate = GPIO_AF7_USART2;
  13.         HAL_GPIO_Init(GPIOD,&GPIO_Init2);

  14.         GPIO_Init2.Pin = GPIO_PIN_5;                     //485 TX config
  15.   GPIO_Init2.Mode = GPIO_MODE_AF_PP;
  16.   GPIO_Init2.Pull = GPIO_NOPULL;
  17.   GPIO_Init2.Speed = GPIO_SPEED_FREQ_HIGH;
  18.         GPIO_Init2.Alternate = GPIO_AF7_USART2;
  19.         HAL_GPIO_Init(GPIOD,&GPIO_Init2);

  20.         GPIO_Init2.Pin = GPIO_PIN_6;                    //485 RX config
  21.         GPIO_Init2.Mode = GPIO_MODE_AF_PP;
  22.         GPIO_Init2.Pull = GPIO_NOPULL;
  23.         GPIO_Init2.Speed = GPIO_SPEED_FREQ_HIGH;
  24.         GPIO_Init2.Alternate = GPIO_AF7_USART2;
  25.         HAL_GPIO_Init(GPIOD,&GPIO_Init2);        //USART2_GPIO配置
  26.   RS485_R;

  27.         huart2_dma_rx.Instance=DMA1_Stream5;                     //RX_DMA_config
  28.         huart2_dma_rx.Init.Channel=DMA_CHANNEL_4;
  29.         huart2_dma_rx.Init.Direction=DMA_PERIPH_TO_MEMORY;
  30.         huart2_dma_rx.Init.PeriphInc=DMA_PINC_DISABLE;
  31.         huart2_dma_rx.Init.MemInc=DMA_MINC_ENABLE;
  32.         huart2_dma_rx.Init.MemDataAlignment= DMA_MDATAALIGN_BYTE;
  33.         huart2_dma_rx.Init.PeriphDataAlignment=DMA_PDATAALIGN_BYTE;
  34.         huart2_dma_rx.Init.Mode=DMA_NORMAL;
  35.         huart2_dma_rx.Init.Priority=DMA_PRIORITY_LOW;
  36.         huart2_dma_rx.Init.FIFOMode=DMA_FIFOMODE_DISABLE;
  37.         HAL_DMA_Init(&huart2_dma_rx);
  38.   __HAL_LINKDMA(&huart2, hdmarx, huart2_dma_rx);           //關聯USART2和DMA
  39.         
  40.         huart2_dma_tx.Instance=DMA1_Stream6;                    //TX_DMA_config
  41.         huart2_dma_tx.Init.Channel=DMA_CHANNEL_4;
  42.         huart2_dma_tx.Init.Direction=DMA_MEMORY_TO_PERIPH;
  43.         huart2_dma_tx.Init.PeriphInc=DMA_PINC_DISABLE;
  44.         huart2_dma_tx.Init.MemInc=DMA_MINC_ENABLE;
  45.         huart2_dma_tx.Init.MemDataAlignment= DMA_MDATAALIGN_BYTE;
  46.         huart2_dma_tx.Init.PeriphDataAlignment=DMA_PDATAALIGN_BYTE;
  47.         huart2_dma_tx.Init.Mode=DMA_NORMAL;
  48.         huart2_dma_tx.Init.Priority=DMA_PRIORITY_HIGH;
  49.         huart2_dma_tx.Init.FIFOMode=DMA_FIFOMODE_DISABLE;
  50.         HAL_DMA_Init(&huart2_dma_tx);
  51.         __HAL_LINKDMA(&huart2, hdmatx, huart2_dma_tx);  //關聯USART2和DMA        
  52.         
  53.         huart2.Instance = USART2;              
  54.   huart2.Init.BaudRate = bound;
  55.   huart2.Init.WordLength = UART_WORDLENGTH_8B;
  56.   huart2.Init.StopBits = UART_STOPBITS_1;
  57.   huart2.Init.Parity = UART_PARITY_NONE;
  58.   huart2.Init.Mode = UART_MODE_TX_RX;
  59.   huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  60.   huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  61.   huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  62.         HAL_UART_Init(&huart2);    //串口配置
  63.         
  64.         HAL_NVIC_SetPriority(USART2_IRQn,3,3);            //配置USART2的中斷并使能
  65.   HAL_NVIC_EnableIRQ(USART2_IRQn);        
  66.   HAL_NVIC_SetPriority(DMA1_Stream6_IRQn,3,3);          //配置DMA通道的中斷并使能
  67.   HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
  68.   HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 3, 3);
  69.   HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
  70. }


  71. int main(void)   
  72. {
  73.   HAL_Init();
  74.   Sysclk_config();
  75.         USART2_UART_Init(38400);
  76.         RS485_Send_data(buffer1,4);
  77.         HAL_Delay(1000);
  78.         HAL_UART_Receive_DMA(&huart2,buffer2,data_length);//打開DMA接收
  79.   while(1)
  80.   {
  81.            if(flag==1)
  82.           {
  83.            RS485_Send_data(buffer2,data_length);
  84.                  flag=0;
  85.           }
  86. }
  87. }


  88. void USART2_IRQHandler(void)
  89. {
  90.         HAL_UART_IRQHandler(&huart2);
  91. }

  92. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  93. {
  94.                 flag=1;
  95.           HAL_Delay(1000);
  96.                 HAL_UART_Receive_DMA(&huart2,buffer2,data_length);//打開DMA接收
  97. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:393586 發表于 2018-12-5 11:37 | 只看該作者
問題已解決,還是485管腳配置的問題
回復

使用道具 舉報

板凳
ID:393586 發表于 2018-12-5 11:37 | 只看該作者
基本配置要保證不能出錯
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 九九亚洲精品 | 免费国产视频 | 国产露脸国语对白在线 | 欧美乱做爰xxxⅹ久久久 | 久久久久国产精品免费免费搜索 | 欧美亚洲视频 | 色狠狠一区 | 精品国产乱码久久久久久影片 | h网站在线观看 | 在线成人www免费观看视频 | 国产99久久精品一区二区300 | 欧美黑人狂野猛交老妇 | 日韩欧美在线免费观看 | 99久久精品免费看国产免费软件 | 国产粉嫩尤物极品99综合精品 | 欧美日韩一区精品 | 国产一区二区三区免费视频 | 午夜男人的天堂 | 欧美日韩高清 | 久久久xxx| 国产高清一区二区三区 | 日韩欧美不卡 | 久草中文在线观看 | 亚洲 欧美 日韩在线 | 久久久久国产一区二区三区 | 免费黄色a级毛片 | 亚洲综合日韩精品欧美综合区 | 亚洲有码转帖 | 亚洲一区二区在线播放 | 天天射中文| 免费毛片在线 | 中文字幕视频在线 | 激情免费视频 | 国内久久精品 | 国产精品国产三级国产a | 成人av电影免费在线观看 | 亚洲精品久久久一区二区三区 | 91中文字幕在线 | 最新av在线播放 | 亚洲一区免费 | 精久久 |