[MCU]

谁帮我看个430程序

[复制链接]
909|23
手机看帖
扫描二维码
随时随地手机跟帖
shimx|  楼主 | 2020-11-19 20:49 | 显示全部楼层 |阅读模式

源码如下:
#include <msp430x14x.h>
void main( void )
{  
  P1DIR = 0Xff;P1OUT = 0Xff;
  P2DIR = 0XFF;P2OUT = 0XFF;
  P3DIR = 0XFF;P3OUT = 0XFF;
  P4DIR = 0XFF;P4OUT = 0XFF;
  P5DIR = 0XFF;P5OUT = 0XFF;
  P6DIR = 0XFF;P6OUT = 0Xff;
  WDTCTL = WDTPW + WDTHOLD;   //关闭看门狗
  P1IES = 0x0f;               // P1.0~P1.3选择下降沿中断
  P1IE  = 0x0f;               // 打开中断使能
  P1DIR =0x00;               //设置P1.0~P.3为输入状态,P.7为输出
  P1OUT = 0;
  _EINT();                    //打开全局中断控制位
  while(1);
}
#pragma vector=PORT1_VECTOR
__interrupt void  PORT1_ISR(void)
{
  unsigned int tmp;
  P2OUT=0x00;
   for(tmp = 12000;tmp > 0;tmp--);
   P1IFG=0;

}

使用特权

评论回复

相关帖子

jiaxw| | 2020-11-19 20:52 | 显示全部楼层
哪方面的问题

使用特权

评论回复
shimx|  楼主 | 2020-11-19 21:00 | 显示全部楼层
按键中断问题

使用特权

评论回复
spark周| | 2020-11-19 21:03 | 显示全部楼层
说具体问题

使用特权

评论回复
shimx|  楼主 | 2020-11-19 21:08 | 显示全部楼层
P1DIR = 0Xff;P1OUT = 0Xff;  初始化IO口时加了这一句 不按按键也直接进中断了,去掉这一句中断又正常了,这是为什么?

使用特权

评论回复
lizye| | 2020-11-19 21:11 | 显示全部楼层
把上拉加上吧

使用特权

评论回复
zyf部长| | 2020-11-19 21:18 | 显示全部楼层
楼主用的什么型号的msp430?
官网有提供例程的,建议参考下例程

使用特权

评论回复
午夜粪车| | 2020-11-19 21:22 | 显示全部楼层
这个需要将IO口的相关寄存器的都涉及到的

使用特权

评论回复
zhaoxqi| | 2020-11-19 21:26 | 显示全部楼层
能给个完整的看下吗,最近也很是头疼这个问题。

使用特权

评论回复
huangchui| | 2020-11-19 21:29 | 显示全部楼层
不知道楼主的P1引脚的外部电路是什么样的,可能有关系。

使用特权

评论回复
jiajs| | 2020-11-19 21:32 | 显示全部楼层
msp430的IO口是CMOS型,当IO处于输入状态时,是高阻态

使用特权

评论回复
zhanghqi| | 2020-11-19 21:39 | 显示全部楼层
对,如果没有外部电路,会因附近电场而随机感应出中间电平。

使用特权

评论回复
shimx|  楼主 | 2020-11-19 21:42 | 显示全部楼层
哦,我知道啦

使用特权

评论回复
jlyuan| | 2020-11-19 21:45 | 显示全部楼层
网上不是一堆的嘛

使用特权

评论回复
yszong| | 2020-11-19 21:49 | 显示全部楼层
说完了?

使用特权

评论回复
jlyuan| | 2020-11-19 21:53 | 显示全部楼层

LM3S800 PWM,单步仿真时每次执行到PWMGenConfigure时程序就跑飞了
int main()
{
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ);
SysCtlPWMClockSet(SYSCTL_PWMDIV_1);          // PWM时钟配置:不分频
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
           
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM);        // 使能PWM模块
GPIOPinTypePWM(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1);     // PE0 PE1 配置为PWM功能
PWMGenConfigure(PWM_BASE, PWM_GEN_2, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);    // 配置PWM发生器2    | PWM_GEN_MODE_DBG_RUN
PWMGenPeriodSet(PWM_BASE, PWM_GEN_2, SysCtlClockGet());         // 设置PWM发生器2的周期
PWMPulseWidthSet(PWM_BASE, PWM_OUT_4, SysCtlClockGet()/2);         // 设置PWM4输出的脉宽
PWMPulseWidthSet(PWM_BASE, PWM_OUT_5, SysCtlClockGet()/2);         // 设置PWM5输出的脉宽
PWMOutputState(PWM_BASE, (PWM_OUT_4_BIT | PWM_OUT_5_BIT), true);  // 使能PWM4和PWM5的输出
PWMGenEnable(PWM_BASE, PWM_GEN_2);           // 使能PWM发生器2,开始产生方波
while(1);

使用特权

评论回复
dengdc| | 2020-11-19 22:05 | 显示全部楼层
奇怪的问题

使用特权

评论回复
jlyuan| | 2020-11-19 22:10 | 显示全部楼层

哈哈 LM3S800内部未集成专用的PWM模块,必须用定时器才能触发,所以。。

使用特权

评论回复
heweibig| | 2020-11-19 22:14 | 显示全部楼层
明白了

使用特权

评论回复
jiahy| | 2020-11-19 22:20 | 显示全部楼层
那编译没有出错了?

使用特权

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

本版积分规则

857

主题

10661

帖子

5

粉丝