[AT32F407] 【AT-START-F407测评】GPIO 及 arduino中无法正常驱动的引脚

[复制链接]
 楼主| tinnu 发表于 2021-2-26 22:51 | 显示全部楼层 |阅读模式
(一)GPIO配置
1-配置时钟
  1. RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOA, ENABLE);



2-配置GPIO
  1.         GPIO_InitType GPIO_InitStructure;
  2.         GPIO_StructInit(&GPIO_InitStructure);
  3.         GPIO_InitStructure.GPIO_Pins = GPIO_Pins_10;
  4.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT_PP;
  5.         GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_50MHz;
  6.         GPIO_Init(GPIOA, &GPIO_InitStructure);

(二)GPIO驱动
1-直接访问寄存器
  1. GPIOA->BRE = GPIO_Pins_10;

2-使用库函数:
  1. GPIO_SetBits(GPIOA, GPIO_Pins_10)

(三)arduino接口
5)CJRT~WOL`ZVIBS1B3TLK0.png

实际使用中,测试了右侧CON8的3-8、CON10的1-3作为GPIO输出,其中PA10、PA9、PB3、PB4、PA15都是无法驱动的。

1-PA10、PA9
猜测PA9、PA10是由于作为串口连接到仿真器,可能被仿真器钳住了。
将以下两颗电阻去掉
然后就可以驱动PA10、PA9
23.jpg
顺便把下面那颗SWO也一起去掉


2-PB3、PB4、PB15
猜测 PB3、PB4、PB15 是由于作为JTAB引脚,需要被释放再驱动。
官方例程需要执行该命令禁止JTAB功能:
  1. GPIO_PinsRemapConfig(GPIO_Remap_SWJ_AllDisable, ENABLE);

但是禁用JTAB之后就只能串口ISP烧录或者修改BOOT方式,加之我上面把串口的电阻去掉了,这么干绝对是给自己找麻烦。所以试试能不能只禁用一半,因为SWJ调试理论上只需要PA13、PA14
12.png 11.png
光看这释放的形式跟友商神似的设计,稳了
GPIO_Remap_SWJ_JTAGDisable 0x02000000
GPIO_Remap_SWJ_AllDisable 0x04000000
显然就是 GPIO_Remap_SWJ_JTAGDisable :
  1.     GPIO_PinsRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

结果不行。我一度以为这几个IO口就是无法单独释放的。连忙飞线,引了PE3、PE5去替代这几个口。
后来仔细研究,发现这个释放IO口是在 【重映射】 相关章节的:
22.png
于是加上一个:
  1. RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_AFIO, ENABLE);


果然就可以了。


讲实话,我对引出这种奇奇怪怪的引脚到 arduino 接口还是持消极态度,作为上百引脚的芯片,多达80个IO,为何偏偏要选这几个稀奇古怪的东西出来?


小明的同学 发表于 2021-3-1 19:10 | 显示全部楼层
呵呵,兼容。
yangxiaor520 发表于 2021-3-1 20:46 来自手机 | 显示全部楼层
谢谢楼主分享经验,学习了。
xu@xupt 发表于 2022-11-28 18:46 | 显示全部楼层
有没有官方arduino??
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

72

帖子

0

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