[MM32软件]

MM32F0010 烧录口SWDIO设置为普通io问题

[复制链接]
1313|8
手机看帖
扫描二维码
随时随地手机跟帖
@lonely|  楼主 | 2021-4-18 13:29 | 显示全部楼层 |阅读模式
请教:如何把MM32F0010的烧录引脚SWDIO设置为普通io口呢?
1、现在按照正常初始化后是不能控制的,同样初始化程序其它io可以正常控制。
2、是不是烧录口初始化普通io需要其他操作?

,程序如下
s32 main(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;

    RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
    GPIO_StructInit(&GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin  =  GPIO_Pin_4 | GPIO_Pin_13 | GPIO_Pin_15;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    GPIOA->AFRL = 0x7777;
    GPIOA->AFRH = 0x7777;
    while(1)
    {
        i = 65535;
        (GPIOA->ODR&(1<<4))?(GPIOA->BRR=(1<<4)):(GPIOA->BSRR = (1<<4)); //示波器可以看到取反信号
        while(i){i--;asm("nop");}  
        (GPIOA->ODR&(1<<13))?(GPIOA->BRR=(1<<13)):(GPIOA->BSRR = (1<<13));<font color="#ff0000">//示波器看不到取反信号</font>
        asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");
        (GPIOA->ODR&(1<<15))?(GPIOA->BRR=(1<<15)):(GPIOA->BSRR = (1<<15));//示波器可以看到取反信号

    }
}






使用特权

评论回复
zhengshuai888| | 2021-4-18 15:02 | 显示全部楼层
需要配置成IO复用功能

使用特权

评论回复
lidi911| | 2021-4-18 15:40 | 显示全部楼层
需要配置成IO复用吧

使用特权

评论回复
@lonely|  楼主 | 2021-4-18 16:41 | 显示全部楼层
已解决,初始化为 GPIOA->AFRH = 0x777777,可以配置PA13为输出,但是也就没有SWD功能,各单位注意了

使用特权

评论回复
嵌入小菜菜| | 2021-4-18 21:47 | 显示全部楼层
这个问题还没有遇到过,不知道怎么办。

使用特权

评论回复
maxking| | 2021-4-25 09:34 | 显示全部楼层
我遇到过,开始没意识到是第18脚的问题。配置为输出后,仿真写入程序,就无法再仿真了。以为是焊接不好,换了几个芯片还是一样。后来才发现是这个SWDIO不起作用了。也找不到既能仿真又能正常使用的好方法。

使用特权

评论回复
yangjiaxu| | 2021-5-19 23:21 | 显示全部楼层
如果按照ST的方式好像得需要先屏蔽SWD功能 再复用成普通IO

使用特权

评论回复
余三水| | 2021-5-20 08:54 | 显示全部楼层
直接操作寄存器赋值的话,容易出错,最好采用宏定义的方式,寄存器手册中给出了SWD解锁的操作的。

使用特权

评论回复
dongnanxibei| | 2021-5-21 16:52 | 显示全部楼层
还是看看手册怎么说的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

75

帖子

3

粉丝