打印
[技术问答]

M054LBN上拉电阻配置

[复制链接]
2893|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
第一次使用新唐的片子,请教一下M054LBN上拉电阻是怎么配置的?我怎么找不到配置的寄存器呢?
沙发
Harry-Nu| | 2016-2-2 10:00 | 只看该作者

使用特权

评论回复
板凳
09kk小熊| | 2016-2-2 10:04 | 只看该作者
M054LBN太老了,现在都改版了用M054LDN了,设置成推挽输出就是带上拉了例如:GPIO_SetMode(P1, BIT2, GPIO_PMD_OUTPUT);就是推挽输出了

使用特权

评论回复
地板
cowboy2014| | 2016-2-2 20:44 | 只看该作者
有一个setmode函数,就是设置上拉电阻的

使用特权

评论回复
5
IversonCar| | 2016-2-4 09:56 | 只看该作者
这个和其他的单片机都是类似的,有setmode函数

使用特权

评论回复
6
734774645| | 2016-2-4 16:05 | 只看该作者
/* Configure P1.2 and P4.1 to default Quasi-bidirectional mode */
    P1->PMD = P1->PMD & (~GPIO_PMD_PMD2_Msk) | (GPIO_PMD_QUASI << GPIO_PMD_PMD2_Pos);
    P4->PMD = P4->PMD & (~GPIO_PMD_PMD1_Msk) | (GPIO_PMD_QUASI << GPIO_PMD_PMD1_Pos);

使用特权

评论回复
7
734774645| | 2016-2-4 16:07 | 只看该作者
上面两句是配置1.2和4.1为准双向模式的方法。
头文件为:
#include <stdio.h>
#include "M051Series.h"
还是比较好理解的。主要是要知道哪两个寄存器需要配置。

使用特权

评论回复
8
734774645| | 2016-2-4 16:29 | 只看该作者
/**
* [url=home.php?mod=space&uid=247401]@brief[/url]       Set GPIO operation mode
*
* @param[in]   port        GPIO port. It could be P0, P1, P2, P3 or P4.
* @param[in]   u32PinMask  The single or multiple pins of specified GPIO port. It could be BIT0 ~ BIT7.
* @param[in]   u32Mode     Operation mode. GPIO_PMD_INPUT, GPIO_PMD_OUTPUT, GPIO_PMD_OPEN_DRAIN, GPIO_PMD_QUASI
*
* [url=home.php?mod=space&uid=266161]@return[/url]      None
*
* [url=home.php?mod=space&uid=1543424]@Details[/url]     This function is used to set specified GPIO operation mode.
*/
void GPIO_SetMode(GPIO_T *port, uint32_t u32PinMask, uint32_t u32Mode)
{
    uint32_t i;

    for(i = 0; i < GPIO_PIN_MAX; i++)
    {
        if(u32PinMask & (1 << i))
        {
            port->PMD = (port->PMD & ~(0x3 << (i << 1))) | (u32Mode << (i << 1));
        }
    }
}
这个是使用库函数的方法。刚才那个是直接操作寄存器。
库函数方法要注意两点:库函数名,参数与参数名字和位置。

使用特权

评论回复
9
734774645| | 2016-2-4 16:32 | 只看该作者
/* Configure P1.2 and P4.1 to default Quasi-bidirectional mode */
    GPIO_SetMode(P1, BIT2, GPIO_PMD_QUASI);
    GPIO_SetMode(P4, BIT1, GPIO_PMD_QUASI);

使用特权

评论回复
10
734774645| | 2016-2-4 16:33 | 只看该作者
咋回事,我明明回复的有自己的文字,不见了
上面这个就是针对刚才我举得例子使用的库函数方法实现的。看起来就简单多了

使用特权

评论回复
11
quray1985| | 2016-2-8 16:36 | 只看该作者

新唐的这个用户手册写的还是很详细的

使用特权

评论回复
12
643757107| | 2016-2-8 18:55 | 只看该作者
/*---------------------------------------------------------------------------------------------------------*/
/*  PMD Constant Definitions                                                                               */
/*---------------------------------------------------------------------------------------------------------*/
#define GPIO_PMD_INPUT          0x0UL /*!< Input Mode */
#define GPIO_PMD_OUTPUT         0x1UL /*!< Output Mode */
#define GPIO_PMD_OPEN_DRAIN     0x2UL /*!< Open-Drain Mode */
#define GPIO_PMD_QUASI          0x3UL /*!< Quasi-bidirectional Mode */


使用特权

评论回复
13
643757107| | 2016-2-8 18:56 | 只看该作者
void GPIO_SetMode(GPIO_T *port, uint32_t u32PinMask, uint32_t u32Mode);
void GPIO_EnableInt(GPIO_T *port, uint32_t u32Pin, uint32_t u32IntAttribs);
void GPIO_DisableInt(GPIO_T *port, uint32_t u32Pin);


使用特权

评论回复
14
cowboy2014| | 2016-2-10 14:12 | 只看该作者
有一个pin_setmode函数

使用特权

评论回复
15
玛尼玛尼哄| | 2016-2-10 14:25 | 只看该作者
库函数方法要注意两点:库函数名,参数与参数名字和位置。

使用特权

评论回复
16
天灵灵地灵灵| | 2016-2-10 16:56 | 只看该作者
对于库函数的原型是如何实现的不用太去细心了解,只需要知道这个函数的写作特点就行。另外了解好参数和返回值。

使用特权

评论回复
17
yiyigirl2014| | 2016-2-10 18:24 | 只看该作者

使用特权

评论回复
18
yiyigirl2014| | 2016-2-10 18:25 | 只看该作者
4 种 I/O 工作模式:  准双向模式 [方便传统 8051 单片机程序员编写代码,然后过渡到 ARM]
 推挽输出模式
 开漏输出模式
 高阻抗输入模

使用特权

评论回复
19
捉虫天师| | 2016-2-11 18:59 | 只看该作者
STM32单片机还可以单独配置上啦电阻,这个新唐单片机没有那么复杂,因为本来你就拿几种功能,为何还要单独去配置一下,多麻烦。

使用特权

评论回复
20
mintspring| | 2016-2-11 20:04 | 只看该作者
设置成推挽输出就是带上拉了例如:GPIO_SetMode(P1, BIT2, GPIO_PMD_OUTPUT);就是推挽输出了

使用特权

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

本版积分规则

2

主题

4

帖子

0

粉丝