打印
[MCU]

谁帮我看个430程序

[复制链接]
846|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 | 只看该作者
说具体问题

使用特权

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

使用特权

评论回复
6
lizye| | 2020-11-19 21:11 | 只看该作者
把上拉加上吧

使用特权

评论回复
7
zyf部长| | 2020-11-19 21:18 | 只看该作者
楼主用的什么型号的msp430?
官网有提供例程的,建议参考下例程

使用特权

评论回复
8
午夜粪车| | 2020-11-19 21:22 | 只看该作者
这个需要将IO口的相关寄存器的都涉及到的

使用特权

评论回复
9
zhaoxqi| | 2020-11-19 21:26 | 只看该作者
能给个完整的看下吗,最近也很是头疼这个问题。

使用特权

评论回复
10
huangchui| | 2020-11-19 21:29 | 只看该作者
不知道楼主的P1引脚的外部电路是什么样的,可能有关系。

使用特权

评论回复
11
jiajs| | 2020-11-19 21:32 | 只看该作者
msp430的IO口是CMOS型,当IO处于输入状态时,是高阻态

使用特权

评论回复
12
zhanghqi| | 2020-11-19 21:39 | 只看该作者
对,如果没有外部电路,会因附近电场而随机感应出中间电平。

使用特权

评论回复
13
shimx|  楼主 | 2020-11-19 21:42 | 只看该作者
哦,我知道啦

使用特权

评论回复
14
jlyuan| | 2020-11-19 21:45 | 只看该作者
网上不是一堆的嘛

使用特权

评论回复
15
yszong| | 2020-11-19 21:49 | 只看该作者
说完了?

使用特权

评论回复
16
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);

使用特权

评论回复
17
dengdc| | 2020-11-19 22:05 | 只看该作者
奇怪的问题

使用特权

评论回复
18
jlyuan| | 2020-11-19 22:10 | 只看该作者

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

使用特权

评论回复
19
heweibig| | 2020-11-19 22:14 | 只看该作者
明白了

使用特权

评论回复
20
jiahy| | 2020-11-19 22:20 | 只看该作者
那编译没有出错了?

使用特权

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

本版积分规则

857

主题

10661

帖子

5

粉丝