本帖最后由 学习来咯 于 2021-9-9 09:47 编辑
初接触GD的芯片,现在就是很简单的翻转IO,遇到好奇怪的问题,自己摸索了一晚上没办法了,只能求助大伙了。希望解惑。因为模电太久没用,都忘了。
我现在的需求就是翻转GD32F303CCTE的48PIN封装的PB15,但是1ms周期都出现波形失真,如果把周期缩短,直接就把直流电平抬高,翻转速度再快一点直接一直是高电平了。一开始我怀疑是硬件(外部这个管脚只有PCB走线,没有接任何的电阻电容)问题,我把外部的走线割断直接测管脚也是一样的失真波形。但是同样的配置,同一个程序,在PB14上没有问题。 手上只有一个芯片,有没有可能是芯片坏了。。。。
程序是最简单的,默认配置主频是120Mhz。
20210909
试过了大伙的建议,都还是一样的问题,我这个端口外部下拉一个电阻会好很多,200K都可以输出(之前200K这个管脚是输出不了的)。怀疑是这个管脚受损坏了(因为配置了上拉,在输出低电平的时候不应该是以内部下拉形式输出的嘛。。。)。手上没有芯片,后面如果有的话会更新给大家结果。谢谢大家了!
#include "gd32f30x.h"
#include "systick.h"
#include <stdio.h>
#include "main.h"
/*!
\brief main function
\param[in] none
\param[out] none
\retval none
*/
int main(void)
{
/* configure systick */
systick_config();
rcu_periph_clock_enable(RCU_GPIOB);
gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_MAX, GPIO_PIN_15);
while (1){
GPIO_OCTL(GPIOB) |= (uint32_t)(GPIO_PIN_15);
delay_1ms(1);
GPIO_OCTL(GPIOB) &= ~((uint32_t)(GPIO_PIN_15));
delay_1ms(1);
}
}
代码就是这么简单,如果我换成GPIO_PIN_14是正常的,就算不加延迟翻转都OK。
|