GD32F350有没有开漏模式

[复制链接]
603|2
 楼主| classroom 发表于 2021-2-7 16:21 | 显示全部楼层 |阅读模式
捣鼓了很长时间, 开漏模式一直没有弄好,不知道怎么回事。STM32系列一点问题都没有的。
laocuo1142 发表于 2021-2-7 16:22 | 显示全部楼层
有没有遇到同样问题的?   当输出为高电平时,开漏结构的MOS管应该是完全不导通的,输出电压是跟随的上拉电压。
flycamelaaa 发表于 2021-2-7 16:22 | 显示全部楼层
参考下边的工程,将GPIO_OTYPE_PP/*!< push pull mode */改成GPIO_OTYPE_OD/*!< open drain mode */
测试在代码执行完gpio_bit_set(GPIOA,GPIO_PIN_8);时LED不亮,即没有推挽输出为高电平。
测试PA8的电平非0,非3.3V,在代码执行完gpio_bit_reset(GPIOA,GPIO_PIN_8);后PA8为0V(或接近0V),输出低电平成功。
证明为开漏输出。
GD32E230_Demo_Suites_V1.0.1\GD32E230C_START_Demo_Suites\Projects\01_GPIO_Runing_Led
#include "gd32e230.h"
#include "gd32e230c_start.h"
#include "systick.h"
#include <stdio.h>

/*!
    \brief      main function
    \param[in]  none
    \param[out] none
    \retval     none
*/
int main(void)
{
    systick_config();
   
    /* enable the LED1 GPIO clock */
    rcu_periph_clock_enable(RCU_GPIOA);
    /* configure LED2 GPIO port */
    gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_8);
    gpio_output_options_set(GPIOA, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_8);
    /* reset LED2 GPIO pin */
    gpio_bit_reset(GPIOA,GPIO_PIN_8);

    while(1){
        delay_1ms(1000);
        gpio_bit_set(GPIOA,GPIO_PIN_8);
        delay_1ms(1000);
        gpio_bit_reset(GPIOA,GPIO_PIN_8);
        delay_1ms(1000);
    }
}
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

548

主题

3464

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部