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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3629|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32用RTS引腳來自動(dòng)驅(qū)動(dòng)RS485的接收

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:373388 發(fā)表于 2021-2-5 20:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
STM32F有一些型號(hào),可以直接驅(qū)動(dòng)RS485的;在網(wǎng)上搜索了好多,沒有現(xiàn)成的實(shí)例;好多提問,最佳答案是否定的,不能自動(dòng)切換,需要用普通IO做RE 和 DE的驅(qū)動(dòng)。本人使用GD32F330 實(shí)驗(yàn),用RTS引腳實(shí)現(xiàn)自動(dòng)切換;初始化代碼分享出來供參考。這顆MCU和STM32F030和051系列管腳兼容,寄存器兼容。
/*
* File:   USART.h
* Author: hai
*
* Created on November 22, 2020, 11:35 PM
*/

#ifndef USART_H
#define        USART_H
#include "gd32f3x0.h"


/* definition for COM 1, connected to USART0 */
#define INVERTERCOM       USART1
#define INVERTERCOM_CLK   RCU_USART1

#define INVERTERCOM_TX_PIN  GPIO_PIN_2
#define INVERTERCOM_RX_PIN  GPIO_PIN_3
#define INVERTERCOM_RTS_PIN GPIO_PIN_1

#define INVERTERCOM_GPIO_PORT        GPIOA
#define INVERTERCOM_GPIO_CLK        RCU_GPIOA
#define INVERTERCOM_AF                        GPIO_AF_1
#define INVERTERCOM_BPS                38400U

#ifdef        __cplusplus
extern "C" {
#endif

void com_init(uint32_t COM);


#ifdef        __cplusplus
}
#endif

#endif        /* USART_H */




#include "usart.h"
#include <stdio.h>


void com_init(uint32_t COM)
{
                /* enable GPIO clock */
    rcu_periph_clock_enable(INVERTERCOM_GPIO_CLK);
    /* enable USART clock */
    rcu_periph_clock_enable(INVERTERCOM_CLK);

    /* connect port to USARTx_Tx_RTS */
    gpio_af_set(INVERTERCOM_GPIO_PORT, INVERTERCOM_AF, INVERTERCOM_RTS_PIN|INVERTERCOM_TX_PIN|INVERTERCOM_RX_PIN);

                /* configure USART Tx as alternate function push-pull */
                gpio_mode_set(INVERTERCOM_GPIO_PORT,GPIO_MODE_AF,GPIO_PUPD_PULLUP,INVERTERCOM_RTS_PIN);
                gpio_output_options_set(INVERTERCOM_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ,INVERTERCOM_RTS_PIN);

    /* configure USART Tx as alternate function push-pull */
    gpio_mode_set(INVERTERCOM_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP,INVERTERCOM_TX_PIN);
    gpio_output_options_set(INVERTERCOM_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ,INVERTERCOM_TX_PIN);

    /* configure USART Rx as alternate function push-pull */
    gpio_mode_set(INVERTERCOM_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP,INVERTERCOM_RX_PIN);
    gpio_output_options_set(INVERTERCOM_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ,INVERTERCOM_RX_PIN);

    /* USART configure */
    usart_deinit(COM);
    usart_baudrate_set(COM,INVERTERCOM_BPS);
                usart_rs485_driver_enable(COM);   //驅(qū)動(dòng)使能
                usart_driver_deassertime_config(COM,0x1F);  // DE (驅(qū)動(dòng)使能)信號(hào)的置位與第一個(gè)字節(jié)的起始位之間的時(shí)間間隔0-0x1F
                usart_driver_assertime_config(COM,0x1F);    //定義一個(gè)發(fā)送信息最后一個(gè)字節(jié)的停止位與置低 DE(驅(qū)動(dòng)使能)信號(hào)之間的時(shí)間間隔
                usart_depolarity_config(COM,USART_DEP_LOW); //DE極性,根據(jù)硬件選擇,這里硬件用三極管反向了
    usart_transmit_config(COM, USART_TRANSMIT_ENABLE);
    usart_receive_config(COM, USART_RECEIVE_ENABLE);
               
    usart_enable(COM);

}


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩中文字幕在线观看 | 91视频在线看 | 在线亚洲欧美 | 日韩精品免费 | 亚洲天堂中文字幕 | 最新日韩在线视频 | 一级欧美一级日韩片免费观看 | 亚洲成人蜜桃 | 国产a级黄色录像 | 欧美成年网站 | 91国产精品 | 亚洲巨乳自拍在线视频 | 日韩精品一区二区三区中文在线 | 成人国产精品色哟哟 | 欧美成人高清视频 | 美女一级黄 | 黄色片视频网站 | 日本不卡一区 | 日韩视频 中文字幕 | 成人亚洲一区 | 久久91精品久久久久久9鸭 | 国产剧情一区 | 欧美h版 | 伊人久久精品一区二区三区 | 亚洲精品 在线播放 | 国产精品久久a | 日韩三级在线 | 国产精品久久一区二区三区 | 久久精品久久综合 | av电影一区 | 欧美日韩精选 | 欧美日韩国产精品一区二区 | 国产欧美精品一区 | 天天干夜夜拍 | 久久久久久国产精品久久 | 国产精品久久久久无码av | 亚洲综合婷婷 | 国产一级在线 | 亚洲精品电影 | 成人国产精品久久 | 天堂综合网 |