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

標題: STM32用RTS引腳來自動驅動RS485的接收 [打印本頁]

作者: xhaity    時間: 2021-2-5 20:27
標題: STM32用RTS引腳來自動驅動RS485的接收
STM32F有一些型號,可以直接驅動RS485的;在網上搜索了好多,沒有現成的實例;好多提問,最佳答案是否定的,不能自動切換,需要用普通IO做RE 和 DE的驅動。本人使用GD32F330 實驗,用RTS引腳實現自動切換;初始化代碼分享出來供參考。這顆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);   //驅動使能
                usart_driver_deassertime_config(COM,0x1F);  // DE (驅動使能)信號的置位與第一個字節的起始位之間的時間間隔0-0x1F
                usart_driver_assertime_config(COM,0x1F);    //定義一個發送信息最后一個字節的停止位與置低 DE(驅動使能)信號之間的時間間隔
                usart_depolarity_config(COM,USART_DEP_LOW); //DE極性,根據硬件選擇,這里硬件用三極管反向了
    usart_transmit_config(COM, USART_TRANSMIT_ENABLE);
    usart_receive_config(COM, USART_RECEIVE_ENABLE);
               
    usart_enable(COM);

}







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: h视频免费在线观看 | 久久不卡日韩美女 | 99久久免费精品国产男女高不卡 | 在线播放亚洲 | 日韩精品 电影一区 亚洲 | 精品亚洲一区二区三区 | 欧美激情精品久久久久久 | 日日干干 | 欧美久久久久久久 | 国产一区二区三区在线视频 | 狠狠爱一区二区三区 | 亚洲免费网址 | 亚洲成人av一区二区 | 国产精品久久久久久亚洲调教 | 国产欧美在线播放 | 国产高清精品在线 | 成人小视频在线观看 | 日韩一 | 国产精品久久亚洲 | 欧美日韩一区二区三区四区五区 | 日韩中文字幕一区二区 | 日本天天操 | 日本一二三区电影 | 呦呦在线视频 | 国产在线www | 免费成人在线网站 | 久久精品国产免费高清 | 欧美一区二区三区在线观看视频 | 美女黄网 | 羞羞色影院 | 99国产精品视频免费观看一公开 | 成人精品 | 九九热在线免费视频 | 老子午夜影院 | 在线观看亚洲 | 天堂综合网 | 中文字幕一区二区三区四区五区 | 中文字幕日韩在线 | 91精品国产自产在线老师啪 | 欧美激情精品久久久久久变态 | 色综合天天天天做夜夜夜夜做 |