打印
[STM32F2]

GPIO设置输出口会有20mv跳变

[复制链接]
1300|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
运行程序,测试IO口会有一个20mv的方波信号,电源也会有这个交流信号。配置如下
int main (void) 
{               
<blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>UINT32 i_i,j_j,k_k;
OP_SW_Init();
       
        TX_AUD_ON();
        while(1)
        {
                i_i++;
                if(i_i>400000)
                {
                        i_i=0;
                        while(j_j<400000)
                        {
j_j++;
                        }
                        j_j=0;
                }
        }
}
IO配置
#define TX_AUD_ON() GPIO_SetBits(GPIOB, GPIO_Pin_9)
#define TX_AUD_OFF() GPIO_ResetBits(GPIOB, GPIO_Pin_9)

void OP_SW_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6|GPIO_Pin_8|GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//GPIO_Speed_100MHz;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
        TX_AUD_OFF();
}
用的是STM32F205VCT6,如果while(j_j<400000)没有这一句就不会出现方波信号(用示波器,交流档,10mv/100ms可以看到)。大家有没有人遇到过这种情况?请路过的各位指点。
沙发
YIHAOXIAOYU|  楼主 | 2015-6-12 11:30 | 只看该作者
好像增加一些无关的初始化,会影响方波的幅度。明明是没有关联的东西实在是早不到原因,请大家帮帮忙。

使用特权

评论回复
板凳
YIHAOXIAOYU|  楼主 | 2015-6-12 17:46 | 只看该作者
我重新整理了下工程,也重新换了个MCU芯片,只是几行简单的程序还是会造成电源波动。请各位大侠帮忙看看。急!!!可能是什么原因造成?各位有什么可能的想法请大胆说出来。

使用特权

评论回复
地板
YIHAOXIAOYU|  楼主 | 2015-6-12 17:58 | 只看该作者
这是MAIN文件,整个工程太大,传不了

main.zip

1.41 KB

使用特权

评论回复
5
尤彼卡| | 2015-6-12 20:56 | 只看该作者
mark,赞

使用特权

评论回复
6
YIHAOXIAOYU|  楼主 | 2015-6-15 09:07 | 只看该作者

赞???问题还没解决,请问你有没有办法?

使用特权

评论回复
7
amanda_s| | 2015-6-15 13:35 | 只看该作者
所以楼主你要输出的是一个高电平或者低电平,却在pin脚测到了方波?是这样吗?
加while循环,是不会有这个影响的。
建议楼主检查一下,是否其他引脚有输出方波?是不是从板上别的地方窜来的?

使用特权

评论回复
8
fanxsd| | 2015-6-15 13:52 | 只看该作者
你可以先用 软件模拟看看有这个方波吗。先确定是程序的 问题吗?然后再自己找问题。。

使用特权

评论回复
9
YIHAOXIAOYU|  楼主 | 2015-6-15 14:19 | 只看该作者
amanda_s 发表于 2015-6-15 13:35
所以楼主你要输出的是一个高电平或者低电平,却在pin脚测到了方波?是这样吗?
加while循环,是不会有这个 ...

没有其他输出控制,就初始化后把那个引脚置高,在while中加循环计数就会测到方波,电源上也有

使用特权

评论回复
10
YIHAOXIAOYU|  楼主 | 2015-6-15 14:39 | 只看该作者
fanxsd 发表于 2015-6-15 13:52
你可以先用 软件模拟看看有这个方波吗。先确定是程序的 问题吗?然后再自己找问题。。 ...

STM32F205VCT6,用的MDK可以软件仿真?我试了好像不能

使用特权

评论回复
11
amanda_s| | 2015-6-25 16:34 | 只看该作者
YIHAOXIAOYU 发表于 2015-6-15 14:39
STM32F205VCT6,用的MDK可以软件仿真?我试了好像不能


选择Use Simulator

使用特权

评论回复
12
amanda_s| | 2015-6-25 16:36 | 只看该作者
我用的V5.14。没问题。

使用特权

评论回复
13
YIHAOXIAOYU|  楼主 | 2015-6-29 08:56 | 只看该作者
本帖最后由 YIHAOXIAOYU 于 2015-6-29 08:58 编辑

仿真,5.14可以观察外设??@

使用特权

评论回复
14
YIHAOXIAOYU|  楼主 | 2015-10-12 15:16 | 只看该作者
目前判断结果应该是MCU有一小段时间处于高速运算,造成电源波动,但是还是很难理解。目前工程是裸跑的,应该说此时的CPU占用率是100%,那是否进行运算有会有差别么???有知道的么?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

39

帖子

0

粉丝