参考下边的工程,将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);
}
}
复制代码
|