[技术问答] 新唐M451 PF6 不受控 急

[复制链接]
1495|15
 楼主| kqxajgg 发表于 2017-1-5 11:08 | 显示全部楼层 |阅读模式
新唐M451    PF6  不受控,在主程序中把功能利用为GPIO。仍然不受控,这个脚是ICE_DAT,怎样才能设置成GPIO呢,急呀,求大神帮忙
 楼主| kqxajgg 发表于 2017-1-6 09:47 | 显示全部楼层
谢谢大家,需要在SYS_Init函数中加下面两句就可以了,不影响在Keil里面重新烧录程序,但没试过在线调试。
 楼主| kqxajgg 发表于 2017-1-6 09:48 | 显示全部楼层
kqxajgg 发表于 2017-1-6 09:47
谢谢大家,需要在SYS_Init函数中加下面两句就可以了,不影响在Keil里面重新烧录程序,但没试过在线调试。 ...

        SYS->GPF_MFPL &= ~(SYS_GPF_MFPL_PF6MFP_Msk);
    SYS->GPF_MFPL |= SYS_GPF_MFPL_PF6MFP_GPIO;
huangcunxiake 发表于 2017-1-5 16:20 | 显示全部楼层
你是设置为输出还是输入?用的是库函数?
huangcunxiake 发表于 2017-1-5 16:23 | 显示全部楼层

  1. /**
  2. * [url=home.php?mod=space&uid=247401]@brief[/url]       Set GPIO operation mode
  3. *
  4. * @param[in]   port        GPIO port. It could be PA, PB, PC, PD, PE or PF.
  5. * @param[in]   u32PinMask  The single or multiple pins of specified GPIO port.
  6. *                          It could be BIT0 ~ BIT15 for PA, PB, PC and PD GPIO port.
  7. *                          It could be BIT0 ~ BIT14 for PE GPIO port.
  8. *                          It could be BIT0 ~ BIT7 for PF GPIO port.
  9. * @param[in]   u32Mode     Operation mode.  It could be \n
  10. *                          GPIO_MODE_INPUT, GPIO_MODE_OUTPUT, GPIO_MODE_OPEN_DRAIN, GPIO_MODE_QUASI.
  11. *
  12. * [url=home.php?mod=space&uid=266161]@return[/url]      None
  13. *
  14. * [url=home.php?mod=space&uid=1543424]@Details[/url]     This function is used to set specified GPIO operation mode.
  15. */
  16. void GPIO_SetMode(GPIO_T *port, uint32_t u32PinMask, uint32_t u32Mode)
  17. {
  18.     uint32_t i;

  19.     for(i = 0; i < GPIO_PIN_MAX; i++)
  20.     {
  21.         if(u32PinMask & (1 << i))
  22.         {
  23.             port->MODE = (port->MODE & ~(0x3 << (i << 1))) | (u32Mode << (i << 1));
  24.         }
  25.     }
  26. }
这里说的这个函数是支持PF6的。

 楼主| kqxajgg 发表于 2017-1-5 20:07 | 显示全部楼层
huangcunxiake 发表于 2017-1-5 16:23
这里说的这个函数是支持PF6的。

        GPIO_SetMode(PF, BIT1|BIT3|BIT4|BIT6, GPIO_MODE_OUTPUT);
    PF6  =  0;
   
        while(1);
 楼主| kqxajgg 发表于 2017-1-5 20:08 | 显示全部楼层
huangcunxiake 发表于 2017-1-5 16:20
你是设置为输出还是输入?用的是库函数?

        GPIO_SetMode(PF, BIT1|BIT3|BIT4|BIT6, GPIO_MODE_OUTPUT);
    PF6  =  0;
        while(1);
这样写的,前几个都可以控制 但PF6 不能控制
598330983 发表于 2017-1-6 00:01 | 显示全部楼层
单独写个试试。还有看看其他端口的BIT6靠谱不,这个端口外部接了什么吗
落叶行健ywm 发表于 2017-1-6 08:23 | 显示全部楼层
ICE_DAT 功能先关了。好像有函数可以设置,不过你以后烧写代码之类就来回切换比较麻烦
 楼主| kqxajgg 发表于 2017-1-6 09:34 | 显示全部楼层
落叶行健ywm 发表于 2017-1-6 08:23
ICE_DAT 功能先关了。好像有函数可以设置,不过你以后烧写代码之类就来回切换比较麻烦 ...

怎么关呀?
 楼主| kqxajgg 发表于 2017-1-6 09:44 | 显示全部楼层

谢谢提醒,问题解决,且不影响烧录,
huangcunxiake 发表于 2017-1-10 22:32 | 显示全部楼层

这个是什么功能,怎么搞定的,没看你贴的代码有这个啊
 楼主| kqxajgg 发表于 2017-2-21 09:50 | 显示全部楼层
huangcunxiake 发表于 2017-1-5 16:23
这里说的这个函数是支持PF6的。

需要在SYS_Init函数中加下面两句就可以了 SYS->GPF_MFPL &= ~(SYS_GPF_MFPL_PF6MFP_Msk);
    SYS->GPF_MFPL |= SYS_GPF_MFPL_PF6MFP_GPIO;
zhuomuniao110 发表于 2017-2-21 12:41 | 显示全部楼层
现在受控了没
huangcunxiake 发表于 2017-2-21 19:52 | 显示全部楼层
kqxajgg 发表于 2017-2-21 09:50
需要在SYS_Init函数中加下面两句就可以了 SYS->GPF_MFPL &= ~(SYS_GPF_MFPL_PF6MFP_Msk);
    SYS->GPF_M ...

MARK。。多功能外设的选择。选择成IO模式。
huangcunxiake 发表于 2017-2-21 19:53 | 显示全部楼层
那么就是这个端口默认的功能不是GPIO了,之前以为所有的端口都是默认IO呢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

32

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部