打印
[AT32F407]

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

[复制链接]
880|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tinnu|  楼主 | 2021-2-26 22:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
(一)GPIO配置
1-配置时钟
RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOA, ENABLE);



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

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

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

(三)arduino接口


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

1-PA10、PA9
猜测PA9、PA10是由于作为串口连接到仿真器,可能被仿真器钳住了。
将以下两颗电阻去掉
然后就可以驱动PA10、PA9

顺便把下面那颗SWO也一起去掉


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

但是禁用JTAB之后就只能串口ISP烧录或者修改BOOT方式,加之我上面把串口的电阻去掉了,这么干绝对是给自己找麻烦。所以试试能不能只禁用一半,因为SWJ调试理论上只需要PA13、PA14

光看这释放的形式跟友商神似的设计,稳了
GPIO_Remap_SWJ_JTAGDisable 0x02000000
GPIO_Remap_SWJ_AllDisable 0x04000000
显然就是 GPIO_Remap_SWJ_JTAGDisable :
    GPIO_PinsRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

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

于是加上一个:
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

主题

68

帖子

0

粉丝