當前位置:首頁 » 數據倉庫 » 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出來的方波頻率過大的話人眼是看不出燈的閃爍的,用示波器看看,或是重新檢查各個寄存器的配置是否正確,沒看到你的代碼所以不太好講。


祝好運!