亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

關(guān)于STM32 RS485控制I/O口不能正常輸出高低電平的解決方法

null1145 / 2821人閱讀

摘要:當(dāng)單片機(jī)要接收數(shù)據(jù)的時(shí)候,控制為低電平,數(shù)據(jù)通過(guò)接收回來(lái)。檢測(cè)通過(guò)萬(wàn)用表測(cè)量控制的引腳一直處于高電平,即使函數(shù)就多帶帶寫(xiě)將該引腳為低電平,測(cè)量出來(lái)還是高電平。

一、問(wèn)題:

問(wèn)題現(xiàn)象:在進(jìn)行RS485操作時(shí),發(fā)現(xiàn)接收時(shí)而進(jìn)時(shí)而不進(jìn)中斷:

將485的AB輸出腳直接與串口的TX,RX對(duì)接發(fā)現(xiàn)串口定時(shí)發(fā)數(shù)據(jù)能進(jìn)入中斷,但是有點(diǎn)不受控制,

接著測(cè)量MAX485各個(gè)引腳的腳,發(fā)現(xiàn)MAX485的RE/DE引腳一直處于高電平

根據(jù)RS485工作原理:

  • 當(dāng)單片機(jī)要發(fā)送數(shù)據(jù)的時(shí)候,控制CTRL為高電平,數(shù)據(jù)通過(guò)TXD發(fā)送出去。
  • 當(dāng)單片機(jī)要接收數(shù)據(jù)的時(shí)候,控制CTRL為低電平,數(shù)據(jù)通過(guò)RXD接收回來(lái)。

普通的485電路,除了“用RXD連接485芯片的RO引腳、用TXD連接485芯片的DI引腳”,還會(huì)用一個(gè)單片機(jī)的普通IO引腳連接到RE、DE引腳上,來(lái)進(jìn)行RS485收發(fā)控制。

?檢測(cè):

通過(guò)萬(wàn)用表測(cè)量控制RE / DE的引腳一直處于高電平,即使main函數(shù)就多帶帶寫(xiě)將該IO引腳為低電平,測(cè)量出來(lái)還是高電平。

?

二、處理方法

? ? ? ?根據(jù)手冊(cè)查找,了解到?I/O口不能正常輸出一般都是端口被復(fù)用了造成的,除了檢查程序中是否有把端口復(fù)用的程序外,還應(yīng)注意:有些端口在單片機(jī)上電時(shí)默認(rèn)就是復(fù)用的,如與JTAG相關(guān)的PA13,PA14,PA15,PB3,PB4引腳,禁用JTAG或SWD可以釋放其中的一些引腳,見(jiàn)表格:

?

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO ,ENABLE);//重映射需要先使能AFIO時(shí)鐘GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//只關(guān)閉JTAG而保留SWD

?RS485控制收發(fā)的引腳正是 ——A15

修改初始化函數(shù):?

void RS485_Config(void){  GPIO_InitTypeDef GPIO_InitStructure;  USART_InitTypeDef USART_InitStructure;	NVIC_InitTypeDef NVIC_InitStructure;	/* config USART clock */  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);  RCC_APB1PeriphClockCmd(RS485_USART_CLK, ENABLE);	  //處理復(fù)位問(wèn)題  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO ,ENABLE);    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); 	/* TX GPIO */  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  GPIO_Init(GPIOC, &GPIO_InitStructure); /*RX */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   GPIO_Init(GPIOC, &GPIO_InitStructure); /* 485收發(fā)控制引腳 */   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15 ;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_Init(GPIOA, &GPIO_InitStructure);/* USART */  USART_InitStructure.USART_BaudRate = RS485_USART_BAUDRATE;  USART_InitStructure.USART_WordLength = USART_WordLength_8b;  USART_InitStructure.USART_StopBits = USART_StopBits_1;  USART_InitStructure.USART_Parity = USART_Parity_No ;  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;  USART_Init(RS485_USART, &USART_InitStructure);#ifdef EN_UART4_RX   	//接收使能/*NVIC*/  NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn;   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   NVIC_Init(&NVIC_InitStructure);   USART_ITConfig(RS485_USART, USART_IT_IDLE, ENABLE);#endif  USART_Cmd(RS485_USART, ENABLE);  _uart4_dma_configuration();	  USART_DMACmd(UART4, USART_DMAReq_Tx, ENABLE);  			  USART_DMACmd(UART4, USART_DMAReq_Rx, ENABLE);  			  USART_GetITStatus(UART4, USART_FLAG_TC);  RS485_TX_EN =0;   // 設(shè)置485 mode控制: 0 :RX,1:TX}

三、結(jié)果

萬(wàn)用表測(cè)量引腳可以引腳變低電平了,測(cè)試成功?。?/p>

?

參考:STM32 I/O口不能正常輸出高低電平問(wèn)題的解決方案_奇葩猴的博客-CSDN博客

?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/121076.html

相關(guān)文章

  • 基于UCOSIIRS485通信(STM32F107)

    摘要:為了可靠工作,在總線狀態(tài)切換時(shí)需要做適當(dāng)延時(shí),再進(jìn)行數(shù)據(jù)收發(fā)。 一、實(shí)現(xiàn)效果 ????????基于ucosii實(shí)時(shí)操作系統(tǒng)的RS485通信,采用USART + DMA進(jìn)行收發(fā), ?二、開(kāi)發(fā)環(huán)境 開(kāi)發(fā)工具:KEIL V5開(kāi)發(fā)板: STM32f107RC采用方式:USART + DMA使用系統(tǒng):...

    verano 評(píng)論0 收藏0
  • STM32】標(biāo)準(zhǔn)庫(kù)與HAL庫(kù)對(duì)照學(xué)習(xí)教程八--串通信詳解

    摘要:異步通信與同步通信異步通信異步通信是指通信的發(fā)送與接收設(shè)備使用各自的時(shí)鐘控制數(shù)據(jù)的發(fā)送和接收過(guò)程。同步通信同步通信時(shí)要建立發(fā)送方時(shí)鐘對(duì)接收方時(shí)鐘的直接控制,使雙方達(dá)到完全同步。配置串口設(shè)置為異步通信基礎(chǔ)參數(shù)波特率為。 ...

    yck 評(píng)論0 收藏0
  • stm32通過(guò)I2C接實(shí)現(xiàn)溫濕度(AHT20)采集

    摘要:如圖所示在了解起始條件和停止條件后,我們?cè)賮?lái)看看在這個(gè)過(guò)程中數(shù)據(jù)的傳輸是如何進(jìn)行的。四參考資料通過(guò)接口實(shí)現(xiàn)溫濕度的采集硬件和軟件區(qū)別 stm32通過(guò)I2C接口實(shí)現(xiàn)...

    chengtao1633 評(píng)論0 收藏0
  • RS485電路設(shè)計(jì)詳解

    摘要:在板卡設(shè)計(jì)中,共模電感也是起濾波的作用,用于抑制高速信號(hào)線產(chǎn)生的電磁波向外輻射發(fā)射。 RS485電路設(shè)計(jì) 一:簡(jiǎn)介二:原理圖設(shè)計(jì)三:電路EMC設(shè)計(jì)四: PCB設(shè)計(jì)...

    王偉廷 評(píng)論0 收藏0
  • Linux驅(qū)動(dòng)開(kāi)發(fā):匯編LED燈實(shí)驗(yàn)(I.MX6UL芯片)

    摘要:壓擺率就是電平跳變所需要的時(shí)間,比如從到需要多少時(shí)間,時(shí)間越小波形就越陡,說(shuō)明壓擺率越高反之,時(shí)間越多波形就越緩,壓擺率就越低。 文章目錄 Linux驅(qū)動(dòng)開(kāi)發(fā):匯...

    張春雷 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<