打印
[技术问答]

在用端口配置工具配置好后,怎么跟例程上不同?

[复制链接]
624|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

如图所示,我把UART用到的IO端口功能选择位串口的功能。
得到了如下的配置文件
void SYS_Init(void)
{
    //SYS->P0_MFP = 0x00000000;
    //SYS->P1_MFP = 0x00000000;
    //SYS->P2_MFP = 0x00000000;
    //SYS->P3_MFP = 0x00000003;
    //SYS->P4_MFP = 0x00000000;
    //SYS->P5_MFP = 0x00000000;
    //SYS->P6_MFP = 0x00000000;

    //If the defines do not exist in your project, please refer to the related sys.h in the sys_h folder appended to the tool package.
    SYS->P0_MFP = 0x00000000;
    SYS->P1_MFP = 0x00000000;
    SYS->P2_MFP = 0x00000000;
    SYS->P3_MFP = SYS_MFP_P31_TXD | SYS_MFP_P30_RXD;
    SYS->P4_MFP = 0x00000000;
    SYS->P5_MFP = 0x00000000;
    SYS->P6_MFP = 0x00000000;

    return;
}

怎么就只有一条
    SYS->P3_MFP = SYS_MFP_P31_TXD | SYS_MFP_P30_RXD;
沙发
yiyigirl2014|  楼主 | 2016-9-4 17:27 | 只看该作者
而官方的例程是    /* Set P3 multi-function pins for UART0 RXD and TXD */
    SYS->P3_MFP &= ~(SYS_MFP_P30_Msk | SYS_MFP_P31_Msk);
    SYS->P3_MFP |= SYS_MFP_P30_RXD | SYS_MFP_P31_TXD;


这样的,一共两条,第一条不懂什么意思,第二条懂,跟那个差不多只不过通过位的逻辑操作保留其他端口的状态。。
那么第一条是什么意思,我能明白是要清除掉对应的那两个位置的什么。。。。

使用特权

评论回复
板凳
yiyigirl2014|  楼主 | 2016-9-4 18:18 | 只看该作者
在头文件sys.h里找到了定义
Multi-Function constant definitions.   多功能常量定义。
————————————————————————————————————
/* How to use below #define?
Example: If user want to set P0.2 as TXD and P0.3 as RXD in initial function,
         user can issue following command to achieve it.

         SYS->P0_MFP &= ~(SYS_MFP_P02_Msk | SYS_MFP_P03_Msk);
         SYS->P0_MFP |= (SYS_MFP_P02_TXD | SYS_MFP_P03_RXD);
*/


这里说如果设置P0.2为TXD,P0.3为RXD在初始化函数里面。
用户可以使用下面的命令实现。
然后举了个例子。。。。但是不懂为何要这么做。手册没有找到具体的说明啊,好坑爹,只说在哪个MFP里面。。MFP好像等于Multi-Functional Peripheral
是这回事吧。不过在这个里面一般定义了3到4个常量。


#define SYS_MFP_P11_GPIO    0x00000000UL /*!< P1_MFP pin 1 setting for GPIO */
#define SYS_MFP_P11_AIN1    0x00000002UL /*!< P1_MFP pin 1 setting for AIN1 */
#define SYS_MFP_P11_T3      0x00000200UL /*!< P1_MFP pin 1 setting for T3   */
#define SYS_MFP_P11_Msk     0x00000202UL /*!< P1_MFP pin 1 mask             */


#define SYS_MFP_P12_GPIO    0x00000000UL /*!< P1_MFP pin 2 setting for GPIO */
#define SYS_MFP_P12_AIN2    0x00000004UL /*!< P1_MFP pin 2 setting for AIN2 */
#define SYS_MFP_P12_Msk     0x00000404UL /*!< P1_MFP pin 2 mask             */


如上面所示。
都会有的是GPIO,然后是其他的功能,最后是个MSK。。。
这里很是疑惑,所有个GPIO定义都是一样的。。。
怎么理解这个 问题。




使用特权

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

本版积分规则

213

主题

3545

帖子

10

粉丝