说明
单片机产生信号在P1.6引脚
单片机输入信号在P2.5引脚
如果直接测量外部信号,直接连接P2.5,不用管P1.6
在变量窗口创建并查看freq的值即可
代码
该代码可以直接在CCS上进行编译运行
142-160行是单片机产生信号
// An highlighte`
#include #include "stdint.h" #include uint32_t timestamp = 0;//时间戳 uint16_t capvalue_1 = 0;//第一次捕捉值 uint16_t capvalue_2 = 0;//第二次捕捉值 uint32_t timestamp_1 = 0;//第一次时间戳 uint32_t timestamp_2 = 0;//第二次时间戳 uint32_t totaltime = 0; float freq = 0; /* * @fn: void InitSystemClock(void) * @brief: 初始化系统时钟 * @para: none * @return: none * @comment:初始化系统时钟 */ void InitSystemClock(void) { /*配置DCO为1MHz*/ DCOCTL = CALDCO_1MHZ; BCSCTL1 = CALBC1_1MHZ; /*配置SMCLK的时钟源为DCO*/ BCSCTL2 &= ~SELS; /*SMCLK的分频系数置为1*/ BCSCTL2 &= ~(DIVS0 | DIVS1); } /* * @fn: void InitUART(void) * @brief: 初始化串口,包括设置波特率,数据位,校验位等 * @para: none * @return: none * @comment:初始化串口 */ void InitUART(void) { /*复位USCI_Ax*/ UCA0CTL1 |= UCSWRST; /*选择USCI_Ax为UART模式*/ UCA0CTL0 &= ~UCSYNC; /*配置UART时钟源为SMCLK*/ UCA0CTL1 |= UCSSEL1; /*配置波特率为9600@1MHz*/ UCA0BR0 = 0x68; UCA0BR1 = 0x00; UCA0MCTL = 1 << 1; /*使能端口复用*/ P1SEL |= BIT1 + BIT2; P1SEL2 |= BIT1 + BIT2; /*清除复位位,使能UART*/ UCA0CTL1 &= ~UCSWRST; } /* * @fn: void UARTSendString(uint8_t *pbuff,uint8_t num) * @brief: 通过串口发送字符串 * @para: pbuff:指向要发送字符串的指针 * num:要发送的字符个数 * @return: none * @comment:通过串口发送字符串 */ void UARTSendString(uint8_t *pbuff,uint8_t num) { uint8_t cnt = 0; for(cnt = 0;cnt < num;cnt ++) { while(UCA0STAT & UCBUSY); UCA0TXBUF = *(pbuff + cnt); } } /* * @fn: void UARTPrint(uint8_t *pbuff) * @brief: 通过串口发送字符串 * @para: pbuff:指向要发送字符串的指针 * @return: none * @comment:通过串口发送字符串,遇到'