msp430f5438如何焊接
❶ msp430g2553晶振怎么焊接
一 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 LED_PORT_DIR P1DIR
#define LED_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()
{
LED_PORT_OUT = ~(BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5);
LED_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) LED_PORT_OUT |= BIT0;
if (ledMask LED2) LED23_PORT_OUT |= BIT1;
if (ledMask LED3) LED23_PORT_OUT |= BIT2;
if (ledMask LED4) LED_PORT_OUT |= BIT1;
if (ledMask LED5) LED_PORT_OUT |= BIT2;
if (ledMask LED6) LED_PORT_OUT |= BIT3;
if (ledMask LED7) LED_PORT_OUT |= BIT4;
if (ledMask LED8) LED_PORT_OUT |= BIT5;
}
//**********************************************************
//*函数: void Board_ledOff(uint8_t ledMask)
//*功能: 关闭输入的那盏灯
//*参数: ledMask
//*返回: 无
//*备注: 无
//**********************************************************
void Board_ledOff(uint8_t ledMask)
{
if (ledMask LED1) LED_PORT_OUT = ~BIT0;
if (ledMask LED2) LED23_PORT_OUT = ~BIT1;
if (ledMask LED3) LED23_PORT_OUT = ~BIT2;
if (ledMask LED4) LED_PORT_OUT = ~BIT1;
if (ledMask LED5) LED_PORT_OUT = ~BIT2;
if (ledMask LED6) LED_PORT_OUT = ~BIT3;
if (ledMask LED7) LED_PORT_OUT = ~BIT4;
if (ledMask LED8) LED_PORT_OUT = ~BIT5;
}
//**********************************************************
//*函数: void Board_ledToggle(uint8_t ledMask)
//*功能: 输入的那盏灯的状态取反
//*参数: ledMask
//*返回: 无
//*备注: 无
//**********************************************************
void Board_ledToggle(uint8_t ledMask)
{
if (ledMask LED1) LED_PORT_OUT ^= BIT0;
if (ledMask LED2) LED23_PORT_OUT ^= BIT1;
if (ledMask LED3) LED23_PORT_OUT ^= BIT2;
if (ledMask LED4) LED_PORT_OUT ^= BIT1;
if (ledMask LED5) LED_PORT_OUT ^= BIT2;
if (ledMask LED6) LED_PORT_OUT ^= BIT3;
if (ledMask LED7) LED_PORT_OUT ^= BIT4;
if (ledMask LED8) LED_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
}
}
}
}
❷ MSP430F5438的VCORE必须接电容吗不接电容会怎么样
最好接个470nF的电容,毕竟TI已经这么说了。不然Vcore很容易由于MCLK变化,带来波动。
❸ 请问一下有源晶振和MSP430F5438怎么连接 晶振引脚是1:EOH 2:GND 3:OUTPUT 4:VCC
3号脚 接入 MSP的CLOCK IN吧
❹ MSP430F5438/A 使用定时器触发ADC采样,怎样配置寄存器
#include "msp430x14x.h"
//初始化ADC12
P6SEL |= 0x01; // 使能ADC通道,默认的VREF为VCC
ADC12CTL0 = ADC12ON+SHT0_5+MSC; // 打开ADC,设置采样时间
/*选择内部参考电压源*/
// ADC12CTL0|= REFON+REF2_5V;
// ADC12MCTL0|=SREF_1;
ADC12CTL1 = SHP+CONSEQ_2; // 使用采样定时器
ADC12IE = 0x01; // 使能ADC中断
ADC12CTL0 |= ENC; // 使能转换
ADC12CTL0 |= ADC12SC; // 开始转换
_EINT();
LPM0;
}
#pragma vector=ADC_VECTOR
__interrupt void conversion()
{
uint buffer[32];
static uint index=0;
buffer[index++]=ADC12MEM0;
if(index==32)
{
index=0;
}
}
数据buffer中的数值 就是转换的数值
❺ 请教MSP430F5438A的晶振选择,最好带程序
#include <msp430x54x.h>
#include"XT2.h"
#define uint unsigned int
#define uchar unsigned char
void initsys()//XT2时钟初始化
{
uchar k;
P5SEL |= BIT2+BIT3; // P5.2和P5.3是 XT2 脚,24MHz晶振
UCSCTL6 &= ~(XT2OFF);//开启XT2晶振
UCSCTL3 |= SELREF_2; // FLLref = REFO
UCSCTL4 |= SELA_2; // ACLK=REFO,SMCLK=DCO,MCLK=DCO
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);//清除TX1,XT2和DCO振荡标志
SFRIFG1&=~OFIFG;//清除振荡器失效标志,清除中断标志
for(k=0xff;k>0;k--)//延时
{;}
}
while((SFRIFG1&OFIFG)!=0);//判断XT2是否起振,等待时钟系统正常工作
UCSCTL6 = XT2DRIVE1 + XT2DRIVE0; //驱动晶振的能力是24M到32M
UCSCTL4 |= SELS_5 + SELM_5+SELA_0; //SELA=XT1(32768Hz), SMCLK=MCLK=XT2(24MHz),CPU时钟(MCLK)为24MHz
UCSCTL5 |= DIVS__4+DIVM__8+DIVA__1; //f(SMCLK)/4,24MHz 4分频为6MHz==高速外围时钟(SMCLK)
}//初始化 //f(MCLK)/8,24MHz 8分频为3MHz==CPU时钟(MCLK)
//f(ACLK)/1,32768Hz 1分频为32768Hz==低速外设(ACLK)
❻ MSP430F5438A altium designer9元件库
第一:抄你可以到一些电子网站袭中去下MSP430F6638的资料,然后你面有详细的参数,可以按照参数自己来画!
http://www.alldatasheet.com/这个网站上一般常见的芯片都能找到,你的430也能找到,希望能帮助你。
第二:你可以在http://bbs.21ic.com/iclist-12-1.html 二十世纪电子工程师网站里面的社区你面找到关于PCB的资料,一些大神会共享些他们的器件库,注册个账号,就可以下载!
❼ 想自己焊接一个MSP430F149板子(只用到了蜂鸣器和LCD1602),焊接硬件电路图是什么样的
相当与149单片机的最小系统加上液晶驱动芯片(因为149单片机内部没有集成LCD驱动)回,液晶驱动芯片直接驱答动液晶,蜂鸣器可以用三极管驱动,因为单片机IO口提供的驱动电流不够用。具体的电路图还得取决于你用什么样的蜂鸣器,液晶多少个引脚,驱动芯片用什么型号等等,如果有不明白的,可以追问!
❽ msp430f5438 C语言编程问题,求指教
<p>这一句是说在i=0时temp[0]=*addr;然后addr+1;</p>
<p>++与*优先级如下,结合方向从右到左。望采纳。</p>
<p></p>
<p> </p>
❾ MSP430F5438单片机问题,急!!!!!!!!!
既然你 学习了 51 那就来好办了、源 像单片机可以简单的称之为可编程器件、 其实 这类芯片很多!各个原理也都不尽相同,但是 从应用的角度讲 有一点是一样的。那即是 都是一个电平的控制,即 控制IO在什么时候该高 什么时候 该低、在内部进行一些运算而已, 至于其他 中断啊 定时器啊这些 原理都一样、其他一些集成功能模块 也一样! 主要是要理解 这么一个整体思想。就好学多了、单片机总类 有很多 、你不可能每样都会、你要学的是方法、以后 在需要用到 什么款式的单片机时 再深入去学习 就很容易的 掌握 几种 典型的 款式 就OK
❿ msp430f5438 P1口外部中断问题!
T=50000/fMCLK
你采用的是连续计数模式(MC_2),所以CCR0在中断里要递加,采用增计数模式(MC_1)则不需要CCR0 += 50000。回
初始化时通过调整答BCSCTL1,DCOCTL调整。DCO时钟有误差,可以采用XT2高频晶振。