OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11310|回复: 8

SW模式下PB3管脚控制

[复制链接]

4

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2012-6-18
在线时间
0 小时
发表于 2014-4-16 10:28:55 | 显示全部楼层 |阅读模式
一个项目用到PB3发现的问题。设置为SW模式时,PB3管脚在跟踪时为TRACESWO信号,cpu软件复位也不会清除,需断电才能再次使用。所以需要关闭跟踪。
否则在进入调试后,PB3管脚不受ODR控制。




关于寄存器
3个控制位用来配置SWJ-DP 接口的引脚,这3个位在系统复位时复位。 
● AFIO_MAPR(STM32F10xxx微控制器中的地址是0x40010004) 
─   读:APB,无等待状态 
─   写:APB,如果AHB-APB桥的写缓冲器满了,则一个等待状态 
位26:24=SWJ_CFG[2:0]  
由软件置位和复位 
这3位用来设置分配给SWJ调试接口的专用引脚数目,目的是在使用不同的调试接口时能释放
尽可能多的引脚用作普通I/O 口。 
复位后的初始值是000( 所有引脚都设置为JTAG-DP接口专用引脚),同时只能置位3个位中的
一个(禁止同时设置一个以上的位)。

调试MCU配置寄存器DBGMCU_CR 
此寄存器允许在调试状态下下配置MCU。包括: 
●  支持低功耗模式 
●  支持定时器和看门狗的计数器 
●  支持bxCAN通信 
●  分配跟踪引脚 
DBGMCU_CR寄存器被映射到外部PPB 总线,基地址为0xE0042000 。 
寄存器由PORESET 异步复位( 不被系统复位所复位) 。当内核处于复位状态下时,调试器可写该
寄存器。 
如果调试器不支持这些特性,用户软件仍可写这些寄存器。 
DBGMCU_CR 
地址:0xE0042004 
只支持32位访问 
POR复位:0x0000 0000(不被系统复位所复位)

使用SW并且PB3可控的配置代码,注意时能AFIO。

RCC->APB2ENR |= 1 |  (1<<3);  /*AFIO/ GPIOB*/
DBGMCU->CR = DBGMCU->CR & ~((uint32_t)1<<5);
AFIO->MAPR |= (AFIO->MAPR & ~((uint32_t)0x7 << 24)) | (2 << 24); //SW模式

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-16 15:03:10 | 显示全部楼层
回复 支持 反对

使用道具 举报

13

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2015-1-26
在线时间
0 小时
发表于 2015-1-26 14:06:52 | 显示全部楼层
RCC->APB2ENR |= 1 |  (1<<3);  /*AFIO/ GPIOB*/
DBGMCU->CR = DBGMCU->CR & ~((uint32_t)1<<5);
AFIO->MAPR |= (AFIO->MAPR & ~((uint32_t)0x7 << 24)) | (2 << 24); //SW模式

我也用了,确实可以实现PB3当作普通IO来用,可是我碰到的问题是PB3拉高时,输出电压是2.83v。这是怎么回事,我要的是3.3V。这怎么办?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-26 23:57:28 | 显示全部楼层
回复【3楼】daliangcao:
---------------------------------
 检查硬件。是不是其它地方接了外设/下拉电阻。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2015-1-26
在线时间
0 小时
发表于 2015-3-16 15:06:17 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
我把芯片换一个,结果就好了。
回复 支持 反对

使用道具 举报

6

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2016-4-25
在线时间
16 小时
发表于 2016-5-8 12:35:14 | 显示全部楼层
谢谢分享我也遇到这个问题了,刚解决,感谢
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-4-26
在线时间
11 小时
发表于 2019-5-23 14:19:47 | 显示全部楼层
谢谢楼主
回复 支持 反对

使用道具 举报

51

主题

214

帖子

0

精华

高级会员

Rank: 4

积分
561
金钱
561
注册时间
2011-4-11
在线时间
43 小时
发表于 2019-10-17 08:03:48 | 显示全部楼层
这个可以 ,我的PB3可以当成普通IO,但是SW也会禁止!
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2017-8-16
在线时间
18 小时
发表于 2020-7-7 15:33:21 | 显示全部楼层
赞啊~   可以用!  下面是使用的程序案例,改LED 案例

1、SW可以使用,包括仿真  
2、输出高是3.3V

我用PB3 PB4做为 IIC接口了,检查到后面 发现,GPIO根本控制不了。 赶紧各种检查GPIO初始化,没错啊!  
跑回来用LED 最简单的程序 调试 PB3 PB4,果然无法控制。 赶紧来论坛逛逛,测试了楼主的程序,果然能控制了。


void LED_Init(void)
{
//        RCC->APB2ENR|=1<<2;    //使能PORTA时钟                    
//        RCC->APB2ENR|=1<<5;    //使能PORTD时钟                    
//        GPIOA->CRH&=0XFFFFFFF0;
//        GPIOA->CRH|=0X00000003;//PA8 推挽输出            
//    GPIOA->ODR|=1<<8;      //PA8 输出高
//                                                                                          
//        GPIOD->CRL&=0XFFFFF0FF;
//        GPIOD->CRL|=0X00000300;//PD.2推挽输出
//        GPIOD->ODR|=1<<2;      //PD.2输出高
       
        RCC->APB2ENR|=1<<3;    //使能PORTA时钟                           
        GPIOB->CRL&=0XFFFF0FFF;
        GPIOB->CRL|=0X00003000;//PB3 推挽输出            
  GPIOB->ODR|=1<<3;      //PB3 输出高
       
        GPIOB->CRL&=0XFFF0FFFF;
        GPIOB->CRL|=0X00030000;//PB4 推挽输出            
  GPIOB->ODR|=1<<4;      //PB4 输出高
       
       
        RCC->APB2ENR |= 1 |  (1<<3);  /*AFIO/ GPIOB*/
        DBGMCU->CR = DBGMCU->CR & ~((uint32_t)1<<5);
        AFIO->MAPR |= (AFIO->MAPR & ~((uint32_t)0x7 << 24)) | (2 << 24); //SW模式
}


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 20:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表