完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我用的是MC9s12xdp512,想通过IC1的上升沿计时,算IC1的频率,可是串口发送speed1和speed2没有数据,这是什么原因啊?
#include #include "derivative.h" /* derivative-specific definitions */ #define BUS_CLOCK 32000000 //总线频率 #define OSC_CLOCK 16000000 //晶振频率 #define BAUD 9600 #define U PTT_PTT0 //_PTT.Bits.PTT0 #define V PTT_PTT1 //_PTT.Bits.PTT1 #define W PTT_PTT2 //_PTT.Bits.PTT2 #define Z PTT_PTT3 //_PTT.Bits.PTT3 unsigned char count=0,speed1,speed2; unsigned int speed; float time; unsigned char *send,data_receive; /*************************************************************/ /* 初始化锁相环 */ /*************************************************************/ void INIT_PLL(void) { CRGINT = 0; //关中断 CLKSEL_PLLSEL = 0; //在未初始化PLL前不使用PLL的输出作为CPU时钟 #if(BUS_CLOCK == 88000000) SYNR = 10; #elif(BUS_CLOCK == 80000000) SYNR = 9; #elif(BUS_CLOCK == 72000000) SYNR = 8; #elif(BUS_CLOCK == 64000000) SYNR = 7; #elif(BUS_CLOCK == 56000000) SYNR = 6; #elif(BUS_CLOCK == 48000000) SYNR = 5; #elif(BUS_CLOCK == 40000000) SYNR = 4; #elif(BUS_CLOCK == 32000000) SYNR = 3; #elif(BUS_CLOCK == 24000000) SYNR = 2; #endif REFDV = 1; //PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1)=64MHz ,fbus=32M PLLCTL_PLLON = 1; //开PLL PLLCTL_AUTO = 1; //选取自动模式 while (CRGFLG_LOCK == 0); //等待PLL锁定频率 CLKSEL_PLLSEL = 1; //选择系统时钟由PLL产生 } /************************************************************/ /* 初始化ECT模块 */ /************************************************************/ void initialize_ect(void) { TSCR1 = 0x80; // 定时器使能位. 1=允许定时器正常工作; 0=使主定时器不起作用(包括计数器) TIOS = 0x00; //指定通道0为输入捕捉方式 TCTL3 = 0x01; TCTL4 = 0x95; // 设置通道0为捕捉上升沿方式 //DLYCT = 0x00; // 延迟控制功能禁止 //ICOVW = 0x00; // 对应的寄存器允许被覆盖; NOVWx = 1, 对应的寄存器不允许覆盖 //ICSYS = 0x0a; // 禁止IC及PAC的保持寄存器 PACTL = 0x00; // PAC2和PAC3级联,1代表级联 PBCTL = 0x00; // PAC0和PAC1级联,1代表级联 TIE = 0xf7; // 允许通道0定时中断 TSCR2 = 0x80; // 预分频系数pr2-pr0:111,时钟周期为4us, TFLG1 = 0xff; // 清除各IC/OC中断标志位 TFLG2 = 0xff; // 清除自由定时器中断标志位 } /*************************************************************/ /* 初始化SCI */ /*************************************************************/ void INIT_SCI(void) { SCI0BD = BUS_CLOCK/16/BAUD; //设置SCI0波特率为9600 SCI0CR1 = 0x00; //设置SCI0为正常模式,八位数据位,无奇偶校验 //SCI0CR2 = 0x2c; //允许发送数据,允许发送中断功能 } /*************************************************************/ /* 串口发送函数 */ /*************************************************************/ void SCI_send(unsigned char data) { while(!SCI0SR1_TDRE); //等待发送数据寄存器(缓冲器)为空 SCI0DRL = data; } /*************************************************************/ /* 串口接收函数 */ /*************************************************************/ unsigned char SCI_receive(void) { while(!SCI0SR1_RDRF); //等待发送数据寄存器满 return(SCI0DRL); } /*************************************************************/ /* 串口中断发送字符串函数 */ /*************************************************************/ #pragma CODE_SEG __NEAR_SEG NON_BANKED void interrupt 20 send_string(void) { data_receive = SCI_receive(); if(data_receive!=0x00) { speed1=speed/256; speed2=speed%256; SCI_send(speed1); SCI_send(speed2); SCI0CR2 = 0x00; TSCR1_TEN = 1; } } void interrupt 9 capture1(void) { TFLG1_C1F = 1; time =(count*65535+TC1-TC1H)/32000000*1000000; speed =(int)(128*60/1024/time); count=0; SCI0CR2 = 0x2c; TSCR1_TEN = 0; } void interrupt 16 TOI(void) { count++; TFLG2_TOF=1; } #pragma CODE_SEG DEFAULT /*************************************************************/ /* 主函数 */ /*************************************************************/ void main(void) { DisableInterrupts; INIT_PLL(); INIT_SCI(); initialize_ect(); EnableInterrupts; for(;;) { } } |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12009 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 16:11 , Processed in 0.547534 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号