TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430F149 如何实现1 min甚至更长时间喂狗一次,希望提供代码

MSP430F149中看门狗最长1S就要喂一次狗,我现在需要更长的时间喂一次狗

Susan Yang:

想要实现较长时间的复位时间,就要给看门狗配置一个低速的时钟.另外建议您看一下WDTCTL, Watchdog Timer Register

WDTISx
Watchdog timer interval select. These bits select the watchdog timer interval to set the WDTIFG flag and/or generate a PUC.

00 Watchdog clock source /32768
01 Watchdog clock source /8192
10 Watchdog clock source /512
11 Watchdog clock source /64

user5365548:

回复 Susan Yang:

这个恐怕不能实现长时间的喂狗,希望能提供一个利用定时器定时,到时间了喂狗的程序,迫切需要,谢谢

灰小子:

回复 user5365548:

大家都很忙,估计没人免费帮你写代码的,另外,代码也要配合合适的硬件才可以实现预想的功能

如果需要项目外包,可以去21ic的外包频道发布项目试试。

user5365548:

回复 灰小子:

好的

user5365548:

回复 灰小子:

我用串行助手以hex的形式向MSP430单片机发送数据,每次只发送一组数据,比如十六进制的40,然后用一个数组中的一位来保存,那么这个时候数组中保存的是什么?怎样才能把它读出来实现16进制转换10进制?
这是我的代码

#pragma vector = UART0RX_VECTOR
__interrupt void UART0_RXISR(void)
{
Data1[count1]=RXBUF0; //数据存入Data数组中// TXBUF0 =RXBUF0; if(Data1[count1++]==0)//是否到达末尾{for(j1=0;j1<count1;j1++){ Buffer1[j1]=Data1[j1];}//复制字符串}Data32[0]=Data1[0];long v=hexToDec(Data32);if(v==64) {P2OUT = 0x7f;send_string("led is on"); flag=1; }if(v==72) {P2OUT = 0xff; send_string("led is off");flag=1;}
}

/* 十六进制数转换为十进制数 */
long hexToDec(char *source)
{long sum = 0;long t = 1;int i, len;len = strlen(source);for(i=len-1; i>=0; i–){sum += t * getIndexOfSigns(*(source + i));t *= 16;}return sum;
}
/* 返回ch字符在sign数组中的序号 */
int getIndexOfSigns(char ch)
{if(ch >= '0' && ch <= '9'){return ch – '0';}if(ch >= 'A' && ch <='F'){return ch – 'A' + 10;}if(ch >= 'a' && ch <= 'f'){return ch – 'a' + 10;}return -1;
}

HG:

回复 user5365548:

串口调试助手发出的字符串会在UART的RX buffer里,你可以用中断或者查询的方式把数据读到一个和FIFO等长的Buffer里,这个buffer里就是你要的16进制数,比如0x40,你用16×4+0就是对应十进制了,没有你做的那么复杂。

赞(0)
未经允许不得转载:TI中文支持网 » MSP430F149 如何实现1 min甚至更长时间喂狗一次,希望提供代码
分享到: 更多 (0)