巅峰残狼 发表于 2015-1-16 13:41:07

STM32F030C8 IO口设置后无法完成下载

如题,我想设置PA0-3的IO口为推挽输出模式,按照参考手册设置如下
        GPIOA->MODER&=0xffffff00;
        GPIOA->MODER|=0x00000055;
        GPIOA->ODR|=0x000f;

这样设置后,jlink无法完成下载,按照库函数方式设置后就可以,如下
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

不知道哪里出了问题,烦请各位帮忙解答一下,谢谢

xyc2690 发表于 2015-1-16 13:41:08

本帖最后由 xyc2690 于 2015-1-16 15:36 编辑

提示什么错误啊?

推挽输出是另外一个寄存器 GPIOA_OTYPER
GPIOA->OTYPER &= 0xFFFFFFF0; //推挽输出

GPIOA->OSPEEDR &= 0xFFFFFF00;
GPIOA->OSPEEDR |= 0x000000FF;   // 输出速度 HIGH


大秦正声 发表于 2015-1-16 14:16:47

估计把swd占用了!

adersonl 发表于 2015-1-16 14:30:27

大秦正声 发表于 2015-1-16 14:16
估计把swd占用了!

不是吧。库就可以,寄存器不可以应该不是占用了SWD的原因

AndyYau-268557 发表于 2015-1-16 15:25:58

你开始清位的时候怎么是0xffffff00.?0-3清位不对吧?

巅峰残狼 发表于 2015-1-17 09:07:15

xyc2690 发表于 2015-1-16 14:49
提示什么错误啊?

推挽输出是另外一个寄存器 GPIOA_OTYPER


输出模式,推挽没设置,应该默认吧?

巅峰残狼 发表于 2015-1-17 09:07:29

AndyYau-268557 发表于 2015-1-16 15:25
你开始清位的时候怎么是0xffffff00.?0-3清位不对吧?

正常的啊

发表于 2015-1-17 09:12:26

用flash loader把程序擦除了,还能再烧写吗?

发表于 2015-1-17 09:49:13

应该是把SWD口给关闭了。你把 GPIOA->ODR 这个去掉试试。

巅峰残狼 发表于 2015-1-17 10:12:49

xyc2690 发表于 2015-1-16 14:49
提示什么错误啊?

推挽输出是另外一个寄存器 GPIOA_OTYPER


搞定了,没写全吗难道说
        GPIOA->MODER&=0xffffff00;
        GPIOA->MODER|=0x00000055;
        GPIOA->OTYPER&=0x0000fff0;               
        GPIOA->OTYPER|=0x00000000;
        GPIOA->OSPEEDR&=0xffffff00;               
        GPIOA->OSPEEDR|=0x000000ff;
        GPIOA->PUPDR&=0xffffff00;                  
        GPIOA->PUPDR|=0x00000055;       
        GPIOA->ODR|=0x000f;
页: [1] 2
查看完整版本: STM32F030C8 IO口设置后无法完成下载