你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
巅峰残狼 提问时间:2015-1-16 13:41 /
5ST金币
如题,我想设置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);

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

最佳答案

查看完整内容

提示什么错误啊? 推挽输出是另外一个寄存器 GPIOA_OTYPER GPIOA->OTYPER &= 0xFFFFFFF0; //推挽输出 GPIOA->OSPEEDR &= 0xFFFFFF00; GPIOA->OSPEEDR |= 0x000000FF; // 输出速度 HIGH
收藏 评论12 发布时间:2015-1-16 13:41

举报

12个回答
xyc2690 回答时间:2015-1-16 13:41:08
本帖最后由 xyc2690 于 2015-1-16 15:36 编辑

提示什么错误啊? 12345.jpg

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

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


大秦正声 回答时间:2015-1-16 14:16:47
估计把swd占用了!
aderson 回答时间:2015-1-16 14:30:27

不是吧。库就可以,寄存器不可以应该不是占用了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;
巅峰残狼 回答时间:2015-1-17 10:13:19
安 发表于 2015-1-17 09:49
应该是把SWD口给关闭了。你把 GPIOA->ODR 这个去掉试试。

搞定了,不是那个的问题
巅峰残狼 回答时间:2015-1-17 10:14:21
安 发表于 2015-1-17 09:12
用flash loader把程序擦除了,还能再烧写吗?

是我jlink本身的问题,我重新烧了固件就可以了,呵呵,不过还是谢谢你啦
巅峰残狼 回答时间:2015-1-17 10:14:43
AndyYau-268557 发表于 2015-1-16 15:25
你开始清位的时候怎么是0xffffff00.?0-3清位不对吧?

没问题的,呵呵,谢谢了
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版