📄 main.c
字号:
#define IN_MAIN
#include "config.h"
#include "Time.h"
#include "UART.h"
#include "stdio.h"
#pragma import(__use_no_semihosting_swi) //don't delete this line
/*
Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz
Fpclk = Fcclk/4 = 44.2368MHz/4 = 11.0592MHz
*/
#define Tn_n 0 //计数器0,Tn_n=0
//计数器1,Tn_n=1
//计数器2,Tn_n=2
#define Tn_MODE 1 //0--上升沿计数,1--下降沿计数,2--上升沿+下降沿
#define Tn_CAPn 0 //捕获通道0,Tn_CAPn=0
//捕获通道1,Tn_CAPn=1
//捕获通道2,Tn_CAPn=2
//捕获通道3,Tn_CAPn=3
#define MAT_data 5 //匹配值为5
#define Tn_PR_data 1 //进行2分频
#define Tn_T_MODE 0 //匹配时定时器复位
#define Tn_EXT_MODE 3 //匹配时,输出翻转
#define Tn_MATn 0 //匹配通道0
#define Tn_INT_En 0 //中断禁止
#define UART_n 0 //使用UART0
#define UART_Baud 115200 //通信波特率为115200
#define UART_datab 8 //8位数据位
#define UART_stopb 1 //1位停止位
#define UART_parity 0 //无奇偶校验位
#define UART_INT_En 0 //无中断
char str[20];
/******************************************************************************************
** 函数名称:SendStr()
** 函数功能:将str中的数据发送到PC机上。
** 入口参数:无
** 出口参数:无
******************************************************************************************/
void SendStr(void)
{
uint8 i = 0;
while(str[i] != '\n')
{
UARTn_SendByte(UART_n,str[i++]);
}
}
/*********************************************************************************************************
** Function name: IRQ_Exception
**
** Descriptions: interrupt exceptional handler , change it as needed
** don't delete this function
********************************************************************************************************/
void IRQ_Exception(void)
{
}
/*********************************************************************************************************
** 函数名称:Main()
** 函数功能:计数器实验,在PC机上使用串口调试助手观察计数器的值。
** 说明: 在测试定时器2的计数器功能时,不能在调试状态下进行。
** 定时器3没有计数引脚。
********************************************************************************************************/
void Main(void)
{
uint32 tmp;
TargetInit(VPBDIV_DATA, PLLCFG_DATA, MAMTIM_DATA); // don't delete
while((PLLSTAT & (1 << 10)) == 0); // can delete
PINSEL0 = 0x00000000; // 设置所有管脚连接GPIO
PINSEL1 = 0x00000000;
//初始化UART0
UARTn_Init(UART_n,UART_Baud,UART_datab,UART_stopb,UART_parity,UART_INT_En);
#if(Tn_n == 0)
// 计数器0初始化
T0MAT_Init(MAT_data,Tn_PR_data,Tn_T_MODE,Tn_EXT_MODE,Tn_MATn,Tn_INT_En);
T0COUNT_Init(Tn_MODE,Tn_CAPn);
while(1)
{
tmp = T0TC;
while(tmp == T0TC);
sprintf(str,"T0TC = %ld; \n",T0TC); //将计数值打印成字符串的形式
SendStr();
}
#endif
#if(Tn_n == 1)
// 计数器1初始化
T1MAT_Init(MAT_data,Tn_PR_data,Tn_T_MODE,Tn_EXT_MODE,Tn_MATn,Tn_INT_En);
T0COUNT_Init(Tn_MODE,Tn_CAPn);
T1COUNT_Init(Tn_MODE,Tn_CAPn);
while(1)
{
tmp = T1TC;
while(tmp == T1TC);
sprintf(str,"T1TC = %ld; \n",T1TC); //将计数值打印成字符串的形式
SendStr();
}
#endif
#if(Tn_n == 2)
// 计数器2初始化
T2MAT_Init(MAT_data,Tn_PR_data,Tn_T_MODE,Tn_EXT_MODE,Tn_MATn,Tn_INT_En);
T0COUNT_Init(Tn_MODE,Tn_CAPn);
T2COUNT_Init(Tn_MODE,Tn_CAPn);
while(1)
{
tmp = T2TC;
while(tmp == T2TC);
sprintf(str,"T2TC = %ld; \n",T2TC); //将计数值打印成字符串的形式
SendStr();
}
#endif
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -