当前位置:首页 » 数据仓库 » pxsel用来配置什么
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

pxsel用来配置什么

发布时间: 2022-05-06 21:31:17

1. MSP430 I/O口功能选择P1SEL和P1SEL2有什么不同啊

PxSEL2 PxSEL Pin Function
0 0 I/O function is selected.
0 1 Primary peripheral mole function is selected.
1 0 Reserved. See device-specific data sheet.
1 1 Secondary peripheral mole function is selected.
00就是P1.1功能 01就是TA0.0 PWM输出的功能 后面那些功能只要设置响应的外设配置寄存器就能用了

P1SEL是配合P1SEL用的。

2. MSP430g2553中P1SEL和P1SEL2连个有什么区别

楼上,我用P1.0作为例子。P1.0它的默认功能就是普通IO口,同时还有其他的复用功能,例如:定时器时钟输入、内部辅助时钟输出、ADC0端口、比较器CA0等。这些功能之间选择,就需要配置P1SE和P1SEL2组合来实现。比如,当P1.0为输出,P1SEL=1,P1SEL2=0,后面的配置为0,此时P1.0口就可以输出系统辅助时钟了。

3. 能给我一个MSP430单片机的程序吗时钟定点起闹,按键调整时间。。

单片机万变不离其宗,都一样。
第一:IO口配置。
MSP430的IO是没有带上拉的,如果要置成输入,PxDIR &= ~0xFF; //Px8为全是输入
PxDIR |= 0xFF; //Px8为全是输出
PxOUT:输出寄存器 PxIN:输入寄存器 PxSEL: 第二功能寄存器 PxIE、PxIFG: MSP430自身带的IO口中断,一般很少用到。
第二:基础时钟的配置
BTCTL :基础时钟控制寄存器
BTCTL = BT_ADLY_16; //16ms中断
<msp430x41x.h>是MSP430F41x系列的头文件,包含各种配置,上述的BT_ADLY_16在头文件能找到具体的配置。
IE2 |= BTIE; //打开基础时钟的中断
第三:晶振起振及其起振稳定性(一般不用)
SCFI0 |= 0x00; // Set DCO operating range, FN = 0: 0.65~6.1MHz
//SCFI0 |= FLLD_4; //Multiply Selected Loop Freq. By 4, fDCO/4
FLL_CTL0 |= XCAP10PF; // Set load capacitance for xtal
SCFQCTL = 31; // (31+1) x 32768 = 1.048576Mhz
//for(unsigned short i = 0; i < 0xffff; i++) ; // start delay

do
{
IFG1 &= ~OFIFG;
for (unsigned char i = 0xFF; i > 0; i--);
}
while ((IFG1 & OFIFG));

第四:中断及其睡眠模式
_EINT(); //All Interrupt enable;
_BIS_SR(LPM0_bits);
_BIC_SR_IRQ(LPM0_bits); // Exit LPM0
以上是430的基础配置,剩下都是编程问题及其个人思路。。。

4. MSP430的端口设置问题

你说的“第二功能”应该是指外围模块功能吧,用模块就选“第二功能”,不用模块就选“第一功能”。
可通过设置PxSEL寄存器进行选择,某位写“0”为I/O;写“1”为“第二功能”。
用到比较器(片内外围模块)时要设置为第二功能。
当然你如果是用片外的比较器,将其输出的高低电平(1或0)送给MSP430,那就选“第一功能”。

5. msp430时钟选择,怎么看出程序里是选择什么时钟

7.2.6 功能选择寄存器 PxSEL
接口管脚的功能因外围模块的功能不同而不同。参考器件的说明文档来决定管脚的功能。
PxSEL寄存器中的每一位选择对应管脚的功能——普通I/O 功能或者外围模块功能。
·位为零:管脚选择为普通I/O功能
·位为一:管脚选择为外围模块功能
设置 PxSELx = 1 不会自动设置管脚的输入输出方式。其它外围模块功能需要根据模块功
能所要求的方向设置PxSELx 位。参考说明文档中的管脚示意图。
注意:当PxSEL=1时,P1和P2口的中断功能被关闭
当PxSEL 的任意一位被置位时,相应管脚的中断功能被关闭。因此从这些管脚引入
的信号不能触发P1或者P2 口中断,不管相应P1IE和P2IE 寄存器的状态。
当一个接口的管脚被选择作为到外围设备的输出时,这个到外围设备的输
出信号就是这个设备管脚的锁存请求信号。当PxSELx=1时,内部输入信号
将跟随这个管脚的信号。但是,如果PxSELx=0,在PxSELx 复位前到外围
设备的输入会保持这个管脚的输入信号值不变。

6. 怎么设置cc2530的gpio为pwm模式输出

IO设为外设模式 PxSEL |= 1<<x;再配置相应的定时器比较通道就可以了。

7. msp430端口功能问题

PxDIR是430IO口的方向控制寄存器,PxIN和PxOUT分别是输入数据和输出数据寄存器。程序应该先配置PxDIR为输入或输出才能对相应寄存器操作。至于你的意思应该是认为有了PxIN和PxOUT就没必要有PxDIR,直接对相应的寄存器操作就行了,但是430内部结构设计已经这样定下来了,至于这样做有什么好处,我也不是很清楚。

对于430是16位的单片机,其实准备地说它是准16位单片机,内部大多数寄存器是16位的,但是每个数据IO只引出了8个管脚。BIT0——BITF并不是表示IO口的引脚,它只是一个宏定义,你可以看430的头文件,BIT0其实就是0x0001,BITF是0x8000,它不只是在IO口是用,在寄存器中也可以用来表示某一位。

8. 如何配置 msp430g2553 io口的 其他功能

一 I/O的简介

1、各种复用和各种设置(可以作为简单IO功能也可以作各种第二功能;可控制为输入、输出、接上拉电阻、接下拉电阻、接受中断等各种情况);

2、IO口常用寄存器有:PXDIR、PXIN、PXOUT、PXREN、PXSEL、PXDS;其中,X可以是1~8,也可以是A~D,因为P1、P2可以合称为PA。例如(PAREN=0x0480)就等价于(P2REN=0x04、P1REN=0x80)。
IO口中断相关寄存器:PXIV、PXIFGX、PXIE、PXIES;由于IO中断仅存在于P1口和P2口,因此X只能为1或2,而且不可以为A。

3、msp430f5529.h中定义了BIT0~BITF,方便用户进行位操作。例如要设置P1.7和P2.2为输入,代码可如下:PADIR &= ~(BITA + BIT7)。

二 IO口常用寄存器配置

1、PxDIR,Px口方向寄存器
0 端口配置为输入(默认)
1 端口配置为输入

2、PxOUT,Px口输出寄存器(输入、输出两种模式)
当IO口配置为输出模式时:
0 输出低电平
1 输出高电平
当IO口配置为输入模式并且置高/ 置低使能时:
0置低
1置高

3、PxIN,Px 口输入寄存器
只读

4、PxREN,Px口置高/ 置低使能寄存器
0关闭置高/ 置低
1使能置高/ 置低

5、PxSEL,Px功能选择寄存器(IO中断只有在普通IO下才能使用)
0普通的I/O(默认)
1有连接外围电路的特殊用途

6、PxDS,Px 口输出驱动能力寄存器(我都是用的默认)
0减弱输出驱动能力(默认)
1全力输出驱动能力

三 普通IO使用举例

说明:本例程是流水灯加按键控制,每次S1按下,便在等待S2按下,否则,所有LED一直闪烁。若无按键按下,则八盏灯以流水灯方式显示。

#include <msp430f5529.h>
#define uint8_t unsigned char
#define uint16_t unsigned int

//********* 控制LED的IO口宏定义 *************
#define LED145678_PORT_DIR P1DIR
#define LED145678_PORT_OUT P1OUT
#define LED23_PORT_DIR P8DIR
#define LED23_PORT_OUT P8OUT

//************ LED的IO口宏定义 *************
#define LED1 0x01
#define LED2 0x02
#define LED3 0x04
#define LED4 0x08
#define LED5 0x10
#define LED6 0x20
#define LED7 0x40
#define LED8 0x80
#define LED_ALL 0xFF

//************ 按键的IO口宏定义 *************
#define BUTTON_S1 (P1IN & BIT7)
#define BUTTON_S2 (P2IN & BIT2)

//**********************************************************
//*函数: void delay(uint16_t x_ms)
//*功能: 延时程序
//*参数: x_ms(单位:ms)
//*返回: 无
//*备注: 无
//**********************************************************
void delay(uint16_t x_ms)
{
uint16_t i=0,j=0;
for(i=x_ms;i>0;i--)
for(j=110;j>0;j--);
}

//**********************************************************
//*函数: void LED_Init()
//*功能: LED的IO口方向初始化
//*参数: 无
//*返回: 无
//*备注: 无
//**********************************************************
void LED_Init()
{
LED145678_PORT_OUT &= ~(BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5);
LED145678_PORT_DIR |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5;
LED23_PORT_OUT &= ~(BIT1 + BIT2);
LED23_PORT_DIR |= BIT1 + BIT2;
}

//**********************************************************
//*函数: void Board_ledOn(uint8_t ledMask)
//*功能: 打开输入的那盏灯
//*参数: ledMask
//*返回: 无
//*备注: 无
//**********************************************************
void Board_ledOn(uint8_t ledMask)
{
if (ledMask & LED1) LED145678_PORT_OUT |= BIT0;
if (ledMask & LED2) LED23_PORT_OUT |= BIT1;
if (ledMask & LED3) LED23_PORT_OUT |= BIT2;
if (ledMask & LED4) LED145678_PORT_OUT |= BIT1;
if (ledMask & LED5) LED145678_PORT_OUT |= BIT2;
if (ledMask & LED6) LED145678_PORT_OUT |= BIT3;
if (ledMask & LED7) LED145678_PORT_OUT |= BIT4;
if (ledMask & LED8) LED145678_PORT_OUT |= BIT5;
}

//**********************************************************
//*函数: void Board_ledOff(uint8_t ledMask)
//*功能: 关闭输入的那盏灯
//*参数: ledMask
//*返回: 无
//*备注: 无
//**********************************************************
void Board_ledOff(uint8_t ledMask)
{
if (ledMask & LED1) LED145678_PORT_OUT &= ~BIT0;
if (ledMask & LED2) LED23_PORT_OUT &= ~BIT1;
if (ledMask & LED3) LED23_PORT_OUT &= ~BIT2;
if (ledMask & LED4) LED145678_PORT_OUT &= ~BIT1;
if (ledMask & LED5) LED145678_PORT_OUT &= ~BIT2;
if (ledMask & LED6) LED145678_PORT_OUT &= ~BIT3;
if (ledMask & LED7) LED145678_PORT_OUT &= ~BIT4;
if (ledMask & LED8) LED145678_PORT_OUT &= ~BIT5;
}

//**********************************************************
//*函数: void Board_ledToggle(uint8_t ledMask)
//*功能: 输入的那盏灯的状态取反
//*参数: ledMask
//*返回: 无
//*备注: 无
//**********************************************************
void Board_ledToggle(uint8_t ledMask)
{
if (ledMask & LED1) LED145678_PORT_OUT ^= BIT0;
if (ledMask & LED2) LED23_PORT_OUT ^= BIT1;
if (ledMask & LED3) LED23_PORT_OUT ^= BIT2;
if (ledMask & LED4) LED145678_PORT_OUT ^= BIT1;
if (ledMask & LED5) LED145678_PORT_OUT ^= BIT2;
if (ledMask & LED6) LED145678_PORT_OUT ^= BIT3;
if (ledMask & LED7) LED145678_PORT_OUT ^= BIT4;
if (ledMask & LED8) LED145678_PORT_OUT ^= BIT5;
}

//**********************************************************
//*函数: void main(void)
//*功能: 主函数
//*参数: 无
//*返回: 无
//*备注: 无
//**********************************************************
void main(void)
{
uint8_t LED = LED1; //定义变量LED
WDTCTL = WDTPW | WDTHOLD; //关闭看门狗
LED_Init(); //初始化LED的IO口方向
PADIR &= ~(BITA + BIT7); //将按键的IO口方向设为输入
PAREN |= (BITA + BIT7); //置高/ 置低使能
PAOUT |= (BITA + BIT7); //置高(类似于上拉)
while(1)
{
Board_ledOn(LED);
delay(1000); //延时1s左右
Board_ledOff(LED);
LED = LED << 1;
if(LED == 0x00) LED = LED1;
if(!BUTTON_S1)
{
delay(10); //消抖
if(!BUTTON_S1)
{
while(!BUTTON_S1);//等待S1释放
while(BUTTON_S2) //等待S2按下
{
Board_ledToggle(LED_ALL);//所有LED状态取反
delay(300);
}
Board_ledOff(LED_ALL);//关闭所有LED
}
}
}
}

9. 新手问个zigbee LED灯程序的问题

#include <ioCC2530.h>
#define D1 P1_0 //定义LED1为P10口控制
#define D2 P1_1 //定义LED2为P11口控制
#define D3 P1_4 //定义LED3为P14口控制
#define D4 P0_1 //定义LED4为P01口控制

/*32M晶振初始化-------------------------------------------*/
void xtal_init(void)
{
SLEEP &= ~0x04; //都上电
while(!(SLEEP & 0x40)); //晶体振荡器开启且稳定
CLKCON &= ~0x47; //选择32MHz 晶体振荡器
SLEEP |= 0x04;
}

/*LED灯初始化---------------------------------------------*/
void led_init(void)
{
P0SEL= 0x00;//P0为普通 I/O 口
P0DIR |= 0x02; //P0.1输出
P1SEL= 0x00;//P1为普通 I/O 口
P1DIR |= 0x13;//P1.0 P1.1 P1.4输出
D1 = 1;
D2 = 1;
D3 = 1;
D4 = 1;
}
/*延时函数----------------------------------------------*/
void Delay(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
}
/*主函数 ----------------------------------------------*/
void main(void)
{
char i;
xtal_init();
while(1)
{
D1 |=!D1;
Delay(10000) ;
}
}

我参照CC2430编的,不知道一不一样

10. MSP430单片PXSEL寄存器功能问题

不知道你的片子具体是哪个型号的而且也没看到你具体的代码,下面我以MSP430G2553为例说一下,主要是SPEC的阅读使用方法(主要是方法哦):

MSP430的片子在开发的时候手头至少要有两个SPEC,1是datasheet,2是user's guide。

以图中的P2.0展开,在datasheet里会有对pin脚功能的说明


MSP430开发的时候这些东西一定要会看,一定要会,否则事倍功半而且云里雾里。


回到题目,配置后整个P2口的中断都不好使可能是因为你没配好或者是后面的配置影响到了前面的配置,片子当中的寄存器石油优先级的,相互冲突的配置优先级高的寄存器有效,P2.0的灯一直亮可能也正常,timer出来的方波频率过大的话人眼是看不出灯的闪烁的,用示波器看看,或是重新检查各个寄存器的配置是否正确,没看到你的代码所以不太好讲。


祝好运!