OpenEdv-开源电子网

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

stm32H750 PB3设置为输入被自动改为输出低电平

[复制链接]

13

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2020-6-24
在线时间
311 小时
发表于 2021-11-30 13:43:04 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 ColeSofCJ 于 2021-11-30 13:52 编辑

     如题,stm32H750 PB3需要设置为输入使用,但复位后调试发现被强制改为输出低电平,不知道怎么才能设为输入方式。
     网上找过资料,有针对stm32f1标准库的,也有stm32f1、f4hal库的,但没有针对stm32H7的方案,直接将针对stm32f1、f4hal库的函数 {   __HAL_RCC_AFIO_CLK_ENABLE();   __HAL_AFIO_REMAP_SWJ_NOJTAG();       //关闭JTAG }    移植过来后发现无法通过编译(项目中查找不到定义,不清楚是stm32H7不需要使用该定义还是包含该定义的文件没有被包含)!  
  (备注: 使用SWD端口调试,不需要使用JTAG端口。目前已有一个能将就的方案,想找一个比较正规一点的解决方法。)

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

使用道具 举报

0

主题

465

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1732
金钱
1732
注册时间
2021-4-11
在线时间
320 小时
发表于 2021-11-30 15:08:20 | 显示全部楼层
单片机上电复位PB3是默认映射为JTAG引脚的,上电之后将PB3设置为普通IO口就行了
回复

使用道具 举报

13

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2020-6-24
在线时间
311 小时
 楼主| 发表于 2021-11-30 16:34:01 | 显示全部楼层
huanan 发表于 2021-11-30 15:08
单片机上电复位PB3是默认映射为JTAG引脚的,上电之后将PB3设置为普通IO口就行了

  已经设置为输入模式了,复位之后刚开始执行完设置代码是正常的,运行几行代码后就被自动改成AF模式了,这时读出的数据都是0。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2021-12-1 01:46:03 | 显示全部楼层
ColeSofCJ 发表于 2021-11-30 16:34
已经设置为输入模式了,复位之后刚开始执行完设置代码是正常的,运行几行代码后就被自动改成AF模式了, ...

应该是你有其他代码修改了,可以仿真找问题看看
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2020-6-24
在线时间
311 小时
 楼主| 发表于 2021-12-1 09:02:20 | 显示全部楼层
本帖最后由 ColeSofCJ 于 2021-12-1 09:51 编辑
正点原子 发表于 2021-12-1 01:46
应该是你有其他代码修改了,可以仿真找问题看看

肯定不是我自己的代码改的,在输入模式设置完毕打断点停下来,点击Step Over进入下一步输入模式就被改为AF模式了,但在输入模式设置完毕之后的某个地方打断点,停下后还是输入模式,然后一走单步就变AF模式了,像是IAR或者仿真器给改的,但找不到对应的设置项。目前是把输入模式设置这部分代码直接放到使用PB3输入数据之前,使用是正常的,但不符合常理!   也试过设置那个LKER寄存器,然而并没有啥作用。
stm32H750单步调试后.png
stm32H750单步调试前.png
回复

使用道具 举报

3

主题

117

帖子

0

精华

高级会员

Rank: 4

积分
559
金钱
559
注册时间
2018-10-3
在线时间
107 小时
发表于 2021-12-1 09:22:20 | 显示全部楼层
cube一配,万事具备
回复

使用道具 举报

13

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2020-6-24
在线时间
311 小时
 楼主| 发表于 2021-12-1 09:35:45 | 显示全部楼层
本帖最后由 ColeSofCJ 于 2021-12-1 09:54 编辑
wklhwkl 发表于 2021-12-1 09:22
cube一配,万事具备

就是Hal库,通过Cube配置生成的,stm32H750好像只有Hal库可用了,附件图片是IAR的设置,从图片可以看到调试的时候SWO好像是On的状态,然而设置菜单里面并没有开启,也找不到在哪里关闭!
stm32H750_SWO.png
stm32H750_ITM设置.png
回复

使用道具 举报

3

主题

117

帖子

0

精华

高级会员

Rank: 4

积分
559
金钱
559
注册时间
2018-10-3
在线时间
107 小时
发表于 2021-12-1 10:59:41 | 显示全部楼层
ColeSofCJ 发表于 2021-12-1 09:35
就是Hal库,通过Cube配置生成的,stm32H750好像只有Hal库可用了,附件图片是IAR的设置,从图片可以看到 ...

__HAL_AFIO_REMAP_SWJ_NOJTAG();   hal库的话 看看有没有加上这个代码。
回复

使用道具 举报

13

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2020-6-24
在线时间
311 小时
 楼主| 发表于 2021-12-1 11:17:30 | 显示全部楼层
wklhwkl 发表于 2021-12-1 10:59
__HAL_AFIO_REMAP_SWJ_NOJTAG();   hal库的话 看看有没有加上这个代码。

   __HAL_RCC_AFIO_CLK_ENABLE();   __HAL_AFIO_REMAP_SWJ_NOJTAG();       //关闭JTAG
  这个一开始就尝试过了,编译通不过,项目里面找不到__HAL_AFIO_REMAP_SWJ_NOJTAG的宏定义!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2021-12-2 01:41:57 | 显示全部楼层
ColeSofCJ 发表于 2021-12-1 09:02
肯定不是我自己的代码改的,在输入模式设置完毕打断点停下来,点击Step Over进入下一步输入模式就被改为 ...

你得跟踪进去,知道么?你也太相信cube了吧?
跟踪到寄存器级别知道不?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2020-6-24
在线时间
311 小时
 楼主| 发表于 2021-12-2 08:29:04 | 显示全部楼层
  不懂啥是寄存器级,我开汇编调试,情况是一样的,刚设置完输入模式,打个断点,走个单步PB3模式就自动改为AF模式了。
stm32H750汇编调试.png
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2020-8-27
在线时间
4 小时
发表于 2021-12-2 13:39:56 | 显示全部楼层
既然能调试,通过F10和F11可快速定位
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2021-12-3 01:51:29 | 显示全部楼层
ColeSofCJ 发表于 2021-12-2 08:29
不懂啥是寄存器级,我开汇编调试,情况是一样的,刚设置完输入模式,打个断点,走个单步PB3模式就自动改 ...

肯定是有地方修改了的,不可能自己改。
可能是中断什么的,具体的你可以从简化代码开始,把代码删到正常位为止。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2020-6-24
在线时间
311 小时
 楼主| 发表于 2021-12-3 09:20:01 | 显示全部楼层
正点原子 发表于 2021-12-3 01:51
肯定是有地方修改了的,不可能自己改。
可能是中断什么的,具体的你可以从简化代码开始,把代码删到正常 ...

  加入taskENTER_CRITICAL()和taskEXIT_CRITICAL()重新调试,效果一样,刚设置完输入模式后打断点停下是好的,走一个单步PB3就变AF模式了,所以应该还是IAR或仿真器这边改的,但就是找不出来哪个地方的设置导致的,网上找了几个可疑的地方都试过了,没有作用!
stm32H750禁用中断后单步调试.png
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2021-12-4 01:12:32 | 显示全部楼层
ColeSofCJ 发表于 2021-12-3 09:20
加入taskENTER_CRITICAL()和taskEXIT_CRITICAL()重新调试,效果一样,刚设置完输入模式后打断点停下是 ...

这。。。
换MDK编译器试试
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 09:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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