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

[复制链接]
1738|13
 楼主| YIHAOXIAOYU 发表于 2015-6-12 11:27 | 显示全部楼层 |阅读模式
运行程序,测试IO口会有一个20mv的方波信号,电源也会有这个交流信号。配置如下
  1. int main (void)
  2. {               
  3. <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配置
  1. #define TX_AUD_ON() GPIO_SetBits(GPIOB, GPIO_Pin_9)
  2. #define TX_AUD_OFF() GPIO_ResetBits(GPIOB, GPIO_Pin_9)

  3. void OP_SW_Init(void)
  4. {
  5.         GPIO_InitTypeDef GPIO_InitStructure;
  6.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
  7. GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6|GPIO_Pin_8|GPIO_Pin_9;
  8.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  9.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  10.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  11.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//GPIO_Speed_100MHz;
  12.         GPIO_Init(GPIOB,&GPIO_InitStructure);
  13.         TX_AUD_OFF();
  14. }
用的是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, 下载次数: 1

尤彼卡 发表于 2015-6-12 20:56 | 显示全部楼层
mark,赞
 楼主| YIHAOXIAOYU 发表于 2015-6-15 09:07 | 显示全部楼层

赞???问题还没解决,请问你有没有办法?
amanda_s 发表于 2015-6-15 13:35 | 显示全部楼层
所以楼主你要输出的是一个高电平或者低电平,却在pin脚测到了方波?是这样吗?
加while循环,是不会有这个影响的。
建议楼主检查一下,是否其他引脚有输出方波?是不是从板上别的地方窜来的?
fanxsd 发表于 2015-6-15 13:52 | 显示全部楼层
你可以先用 软件模拟看看有这个方波吗。先确定是程序的 问题吗?然后再自己找问题。。
 楼主| YIHAOXIAOYU 发表于 2015-6-15 14:19 | 显示全部楼层
amanda_s 发表于 2015-6-15 13:35
所以楼主你要输出的是一个高电平或者低电平,却在pin脚测到了方波?是这样吗?
加while循环,是不会有这个 ...

没有其他输出控制,就初始化后把那个引脚置高,在while中加循环计数就会测到方波,电源上也有
 楼主| YIHAOXIAOYU 发表于 2015-6-15 14:39 | 显示全部楼层
fanxsd 发表于 2015-6-15 13:52
你可以先用 软件模拟看看有这个方波吗。先确定是程序的 问题吗?然后再自己找问题。。 ...

STM32F205VCT6,用的MDK可以软件仿真?我试了好像不能
amanda_s 发表于 2015-6-25 16:34 | 显示全部楼层
YIHAOXIAOYU 发表于 2015-6-15 14:39
STM32F205VCT6,用的MDK可以软件仿真?我试了好像不能

Capture.PNG
选择Use Simulator
amanda_s 发表于 2015-6-25 16:36 | 显示全部楼层
我用的V5.14。没问题。
 楼主| YIHAOXIAOYU 发表于 2015-6-29 08:56 | 显示全部楼层
本帖最后由 YIHAOXIAOYU 于 2015-6-29 08:58 编辑

仿真,5.14可以观察外设??@
 楼主| YIHAOXIAOYU 发表于 2015-10-12 15:16 | 显示全部楼层
目前判断结果应该是MCU有一小段时间处于高速运算,造成电源波动,但是还是很难理解。目前工程是裸跑的,应该说此时的CPU占用率是100%,那是否进行运算有会有差别么???有知道的么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

39

帖子

0

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