[技术问答] M054LBN上拉电阻配置

[复制链接]
3358|29
 楼主| skyline415 发表于 2016-2-2 09:08 | 显示全部楼层 |阅读模式
第一次使用新唐的片子,请教一下M054LBN上拉电阻是怎么配置的?我怎么找不到配置的寄存器呢?
Harry-Nu 发表于 2016-2-2 10:00 | 显示全部楼层

TRM_M051(BN_DN_DE)_Series_SC_Rev1.00

TRM_M051(BN_DN_DE)_Series_SC_Rev1.00

09kk小熊 发表于 2016-2-2 10:04 | 显示全部楼层
M054LBN太老了,现在都改版了用M054LDN了,设置成推挽输出就是带上拉了例如:GPIO_SetMode(P1, BIT2, GPIO_PMD_OUTPUT);就是推挽输出了
cowboy2014 发表于 2016-2-2 20:44 | 显示全部楼层
有一个setmode函数,就是设置上拉电阻的
IversonCar 发表于 2016-2-4 09:56 | 显示全部楼层
这个和其他的单片机都是类似的,有setmode函数
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);
734774645 发表于 2016-2-4 16:07 | 显示全部楼层
上面两句是配置1.2和4.1为准双向模式的方法。
头文件为:
#include <stdio.h>
#include "M051Series.h"
还是比较好理解的。主要是要知道哪两个寄存器需要配置。
734774645 发表于 2016-2-4 16:29 | 显示全部楼层
  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 P0, P1, P2, P3 or P4.
  5. * @param[in]   u32PinMask  The single or multiple pins of specified GPIO port. It could be BIT0 ~ BIT7.
  6. * @param[in]   u32Mode     Operation mode. GPIO_PMD_INPUT, GPIO_PMD_OUTPUT, GPIO_PMD_OPEN_DRAIN, GPIO_PMD_QUASI
  7. *
  8. * [url=home.php?mod=space&uid=266161]@return[/url]      None
  9. *
  10. * [url=home.php?mod=space&uid=1543424]@Details[/url]     This function is used to set specified GPIO operation mode.
  11. */
  12. void GPIO_SetMode(GPIO_T *port, uint32_t u32PinMask, uint32_t u32Mode)
  13. {
  14.     uint32_t i;

  15.     for(i = 0; i < GPIO_PIN_MAX; i++)
  16.     {
  17.         if(u32PinMask & (1 << i))
  18.         {
  19.             port->PMD = (port->PMD & ~(0x3 << (i << 1))) | (u32Mode << (i << 1));
  20.         }
  21.     }
  22. }
这个是使用库函数的方法。刚才那个是直接操作寄存器。
库函数方法要注意两点:库函数名,参数与参数名字和位置。
734774645 发表于 2016-2-4 16:32 | 显示全部楼层
  1. /* Configure P1.2 and P4.1 to default Quasi-bidirectional mode */
  2.     GPIO_SetMode(P1, BIT2, GPIO_PMD_QUASI);
  3.     GPIO_SetMode(P4, BIT1, GPIO_PMD_QUASI);

734774645 发表于 2016-2-4 16:33 | 显示全部楼层
咋回事,我明明回复的有自己的文字,不见了
上面这个就是针对刚才我举得例子使用的库函数方法实现的。看起来就简单多了
quray1985 发表于 2016-2-8 16:36 | 显示全部楼层

新唐的这个用户手册写的还是很详细的
643757107 发表于 2016-2-8 18:55 | 显示全部楼层
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*  PMD Constant Definitions                                                                               */
  3. /*---------------------------------------------------------------------------------------------------------*/
  4. #define GPIO_PMD_INPUT          0x0UL /*!< Input Mode */
  5. #define GPIO_PMD_OUTPUT         0x1UL /*!< Output Mode */
  6. #define GPIO_PMD_OPEN_DRAIN     0x2UL /*!< Open-Drain Mode */
  7. #define GPIO_PMD_QUASI          0x3UL /*!< Quasi-bidirectional Mode */


643757107 发表于 2016-2-8 18:56 | 显示全部楼层
  1. void GPIO_SetMode(GPIO_T *port, uint32_t u32PinMask, uint32_t u32Mode);
  2. void GPIO_EnableInt(GPIO_T *port, uint32_t u32Pin, uint32_t u32IntAttribs);
  3. void GPIO_DisableInt(GPIO_T *port, uint32_t u32Pin);


cowboy2014 发表于 2016-2-10 14:12 | 显示全部楼层
有一个pin_setmode函数
玛尼玛尼哄 发表于 2016-2-10 14:25 | 显示全部楼层
库函数方法要注意两点:库函数名,参数与参数名字和位置。
天灵灵地灵灵 发表于 2016-2-10 16:56 | 显示全部楼层
对于库函数的原型是如何实现的不用太去细心了解,只需要知道这个函数的写作特点就行。另外了解好参数和返回值。
yiyigirl2014 发表于 2016-2-10 18:24 | 显示全部楼层
yiyigirl2014 发表于 2016-2-10 18:25 | 显示全部楼层
4 种 I/O 工作模式:  准双向模式 [方便传统 8051 单片机程序员编写代码,然后过渡到 ARM]
 推挽输出模式
 开漏输出模式
 高阻抗输入模
捉虫天师 发表于 2016-2-11 18:59 | 显示全部楼层
STM32单片机还可以单独配置上啦电阻,这个新唐单片机没有那么复杂,因为本来你就拿几种功能,为何还要单独去配置一下,多麻烦。
mintspring 发表于 2016-2-11 20:04 | 显示全部楼层
设置成推挽输出就是带上拉了例如:GPIO_SetMode(P1, BIT2, GPIO_PMD_OUTPUT);就是推挽输出了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

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