本帖最后由 NYT369 于 2016-5-21 12:31 编辑
用msp430afe253制作了电路板,程序已经在电路板上运行正常
程序示例:#include "CAN.h"#include "msp430_config.h"#include "mcp2515.h"
#define uchar unsigned char#define uint unsigned int
uchar flag;INT16U NUM_COUNT = 0;INT8U Time_Flag = 0;#define CAN_RST_0 P1OUT &=~BIT1 //#define CAN_RST_1 P1OUT |= BIT1 //
uchar Address; //地址uchar RecvBuff[8]={0}; //接收缓存区 uchar SendBuff[8]={0}, SendIndex=0; //发送缓存区,接发送数据缓存区对应数
uchar can_isr_flag = 0; //P1.2有CAN中断标志:接收、发送、错误、溢出uchar can_rcv_data_flag = 0; //CAN接收数据标志uchar datapro_write_flag=0;//处理接收的数据正确,置位发送uchar times; //计数次数uchar SYSTime;
/////////////////////////////////////////////////////////////////////////////////////////////void delay(uint x){ uchar i; while(x--) for(i=120;i>0;i--);}///////////////////////////////////////////////////////////void Init_Clk(){ uchar i; BCSCTL1&=~XT2OFF; //打开XT2振荡器 //基础时钟控制寄存器BCSCTL1的第7位置0,使XT2启动 do { IFG1 &= ~OFIFG; // 清除振荡器失效标志 for (i = 0xFF; i > 0; i--); // 延时,等待XT2起振 } while ((IFG1 & OFIFG) != 0); // 判断XT2是否起振 BCSCTL2 =SELM_2+SELS+DIVS_0; //选择MCLK为XT2 SMCLK为XT2 不分频}/////////////////////////////////////////////////////////void Init_TimeA(){ TACCTL0 = CCIE; //TBCCR0允许中断 TACCR0 = 8000; //TIME:8000/(8mhz) =1ms TACTL = TASSEL_2 + MC_1; //SMCLK,增计数模式 _BIS_SR( GIE); }
///////////////////////////////////////////////////////////void set_p12_to_int( void ){
P1DIR&=~BIT2; // 中断引脚应该设置为输入 P1IES|=BIT2; //设置为下降沿触发,=0上升触发 P1IFG&=~BIT2; //因为P2IES设置会使中断标志位置位,故清零 P1IE|=BIT2; //设置中断使能}//////////////////////////////////////////////void init_SD24(){ uint i; SD24CTL = SD24SSEL_1+SD24REFON+SD24DIV_3; // 1.2V ref, SMCLK,SMLCK 8分频 SD24INCTL0 = SD24INCH_0+SD24GAIN_16; // Set channel A0+/- 16倍增益 SD24CCTL0 |= SD24SNGL + SD24IE+SD24OSR_512+SD24DF; // Single conv,enable interrupt 采样率为512 数据格式(当增益为1时0-32768表示0~-600mv 65535~32768表示0~600mv) for (i = 0; i < 0x3600; i++); // Delay for 1.2V ref startup
}/////////////////////////////////////////////////////////////////////由于发帖字数限制,该帖子未完,请关注续贴。技术交流:qq:531706356,13106551527
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>