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