| 
				打卡等级:以坛为家I打卡总天数:224最近打卡:2025-10-31 13:03:41   管理员 
 
	积分20093 
 | 
 
 发表于 2025-4-13 21:56:35
|
显示全部楼层 
|   
 
 
   
 
 ////////////////////////////////////////
 // 文件名称: main.c
 // 文件描述:
 // 文件版本: V1.0
 // 修改记录:
 //   1. (2025-04-13) 创建文件
 ////////////////////////////////////////
 
 #include "config.h"                     //默认已包含stdio.h、intrins.h、ai_usb.h等头文件
 
 ////////////////////////////////////////
 // 项目主函数
 // 入口参数: 无
 // 函数返回: 无
 ////////////////////////////////////////
 void main(void)
 {
 SYS_Init();
 
 while (1)
 {
 }
 }
 
 ////////////////////////////////////////
 // 系统初始化函数
 // 入口参数: 无
 // 函数返回: 无
 ////////////////////////////////////////
 void SYS_Init(void)
 {
 EnableAccessXFR();                  //使能访问扩展XFR
 AccessCodeFastest();                //设置最快速度访问程序代码
 AccessIXramFastest();               //设置最快速度访问内部XDATA
 IAP_SetTimeBase();                  //设置IAP等待参数,产生1us时基
 
 P0M0 = 0x00; P0M1 = 0x00;           //初始化P0口为准双向口模式
 P1M0 = 0x00; P1M1 = 0x00;           //初始化P1口为准双向口模式
 P2M0 = 0x00; P2M1 = 0x00;           //初始化P2口为准双向口模式
 P3M0 = 0x00; P3M1 = 0x00;           //初始化P3口为准双向口模式
 P4M0 = 0x00; P4M1 = 0x00;           //初始化P4口为准双向口模式
 P5M0 = 0x00; P5M1 = 0x00;           //初始化P5口为准双向口模式
 
 CLK_Init();                         //时钟模块初始化
 PORT0_Init();                       //P0初始化
 PORT1_Init();                       //P1初始化
 PORT2_Init();                       //P2初始化
 PORT3_Init();                       //P3初始化
 PORT4_Init();                       //P4初始化
 PORT5_Init();                       //P5初始化
 
 EnableGlobalInt();                  //使能全局中断
 }
 
 ////////////////////////////////////////
 // 毫秒延时函数
 // 入口参数: ms (设置延时的毫秒值)
 // 函数返回: 无
 ////////////////////////////////////////
 void delay_ms(uint16_t ms)
 {
 uint16_t i;
 
 do
 {
 i = MAIN_Fosc / 6000;
 while (--i);
 } while (--ms);
 }
 
 ////////////////////////////////////////
 // 端口3中断服务程序
 // 入口参数: 无
 // 函数返回: 无
 ////////////////////////////////////////
 void PORT3_ISR(void) interrupt P3INT_VECTOR
 {
 uint8_t intf;
 
 intf = CheckP3nFlag(BIT_ALL);       //读取中断请求标志
 ClearP3nFlag(BIT_ALL);              //清除中断请求标志
 }
 
 
 ////////////////////////////////////////
 // 时钟初始化函数
 // 入口参数: 无
 // 函数返回: 无
 ////////////////////////////////////////
 void CLK_Init(void)
 {
 CLK_SYSCLK_Divider(10);             //切换主时钟前先将系统时钟降频
 
 HIRC_40M();                         //选择内部预置的频率
 
 CLK_MCLK_HIRC();                    //选择内部高精度HIRC作为主时钟
 CLK_MCLK2_BYPASS();                 //旁路MCLK2,直接使用MCLK选择
 
 CLK_SYSCLK_Divider(1);              //设置系统时钟分频系数
 
 CLK_HSIOCK_MCLK();                  //选择MCLK主时钟作为高速外设时钟源
 CLK_HSIOCK_Divider(1);              //设置高速外设时钟预分频系数
 
 CLK_SPICLK_Divider(1);              //设置SPI时钟预分频系数
 CLK_I2SCLK_Divider(1);              //设置I2S时钟预分频系数
 CLK_PWMACLK_Divider(1);             //设置PWMA时钟预分频系数
 CLK_PWMBCLK_Divider(1);             //设置PWMB时钟预分频系数
 CLK_TFPUCLK_Divider(1);             //设置TFPU时钟预分频系数
 }
 
 ////////////////////////////////////////
 // P0口初始化函数
 // 入口参数: 无
 // 函数返回: 无
 ////////////////////////////////////////
 void PORT0_Init(void)
 {
 SetP0nQuasiMode(BIT_ALL);           //设置P0为准双向口模式
 
 DisableP0nPullUp(BIT_ALL);          //关闭P0内部上拉电阻
 DisableP0nPullDown(BIT_ALL);        //关闭P0内部下拉电阻
 DisableP0nSchmitt(BIT_ALL);         //使能P0施密特触发
 SetP0nSlewRateNormal(BIT_ALL);      //设置P0一般翻转速度
 SetP0nDrivingNormal(BIT_ALL);       //设置P0一般驱动能力
 SetP0nDigitalInput(BIT_ALL);        //使能P0数字信号输入功能
 }
 
 ////////////////////////////////////////
 // P1口初始化函数
 // 入口参数: 无
 // 函数返回: 无
 ////////////////////////////////////////
 void PORT1_Init(void)
 {
 SetP1nQuasiMode(BIT_ALL);           //设置P1为准双向口模式
 
 DisableP1nPullUp(BIT_ALL);          //关闭P1内部上拉电阻
 DisableP1nPullDown(BIT_ALL);        //关闭P1内部下拉电阻
 DisableP1nSchmitt(BIT_ALL);         //使能P1施密特触发
 SetP1nSlewRateNormal(BIT_ALL);      //设置P1一般翻转速度
 SetP1nDrivingNormal(BIT_ALL);       //设置P1一般驱动能力
 SetP1nDigitalInput(BIT_ALL);        //使能P1数字信号输入功能
 }
 
 ////////////////////////////////////////
 // P2口初始化函数
 // 入口参数: 无
 // 函数返回: 无
 ////////////////////////////////////////
 void PORT2_Init(void)
 {
 SetP2nQuasiMode(BIT_ALL);           //设置P2为准双向口模式
 
 DisableP2nPullUp(BIT_ALL);          //关闭P2内部上拉电阻
 DisableP2nPullDown(BIT_ALL);        //关闭P2内部下拉电阻
 DisableP2nSchmitt(BIT_ALL);         //使能P2施密特触发
 SetP2nSlewRateNormal(BIT_ALL);      //设置P2一般翻转速度
 SetP2nDrivingNormal(BIT_ALL);       //设置P2一般驱动能力
 SetP2nDigitalInput(BIT_ALL);        //使能P2数字信号输入功能
 }
 
 ////////////////////////////////////////
 // P3口初始化函数
 // 入口参数: 无
 // 函数返回: 无
 ////////////////////////////////////////
 void PORT3_Init(void)
 {
 SetP3nQuasiMode(BIT_ALL);           //设置P3为准双向口模式
 
 EnableP3nPullUp(0x3c);              //使能P3.5,P3.4,P3.3,P3.2内部上拉电阻
 DisableP3nPullUp(0xc3);             //关闭P3.7,P3.6,P3.1,P3.0内部上拉电阻
 DisableP3nPullDown(BIT_ALL);        //关闭P3内部下拉电阻
 DisableP3nSchmitt(BIT_ALL);         //使能P3施密特触发
 SetP3nSlewRateNormal(BIT_ALL);      //设置P3一般翻转速度
 SetP3nDrivingNormal(BIT_ALL);       //设置P3一般驱动能力
 SetP3nDigitalInput(BIT_ALL);        //使能P3数字信号输入功能
 
 SetP3nFallingInt(0x04);             //设置P3.2为下降沿中断
 SetP3nRisingInt(0x08);              //设置P3.3为上升沿中断
 SetP3nLowLevelInt(0x20);            //设置P3.5为低电平中断
 SetP3nHighLevelInt(0x10);           //设置P3.4为高电平中断
 
 SetP3nIntWaieup(0x3c);              //使能P3.5,P3.4,P3.3,P3.2唤醒STOP模式
 
 EnableP3nInt(0x3c);                 //使能P3.5,P3.4,P3.3,P3.2口中断
 
 SetP3IntPriority(0);                //设置中断为最低优先级
 }
 
 ////////////////////////////////////////
 // P4口初始化函数
 // 入口参数: 无
 // 函数返回: 无
 ////////////////////////////////////////
 void PORT4_Init(void)
 {
 SetP4nQuasiMode(BIT_ALL);           //设置P4为准双向口模式
 
 DisableP4nPullUp(BIT_ALL);          //关闭P4内部上拉电阻
 DisableP4nPullDown(BIT_ALL);        //关闭P4内部下拉电阻
 DisableP4nSchmitt(BIT_ALL);         //使能P4施密特触发
 SetP4nSlewRateNormal(BIT_ALL);      //设置P4一般翻转速度
 SetP4nDrivingNormal(BIT_ALL);       //设置P4一般驱动能力
 SetP4nDigitalInput(BIT_ALL);        //使能P4数字信号输入功能
 }
 
 ////////////////////////////////////////
 // P5口初始化函数
 // 入口参数: 无
 // 函数返回: 无
 ////////////////////////////////////////
 void PORT5_Init(void)
 {
 SetP5nQuasiMode(BIT_ALL);           //设置P5为准双向口模式
 
 DisableP5nPullUp(BIT_ALL);          //关闭P5内部上拉电阻
 DisableP5nPullDown(BIT_ALL);        //关闭P5内部下拉电阻
 DisableP5nSchmitt(BIT_ALL);         //使能P5施密特触发
 SetP5nSlewRateNormal(BIT_ALL);      //设置P5一般翻转速度
 SetP5nDrivingNormal(BIT_ALL);       //设置P5一般驱动能力
 SetP5nDigitalInput(BIT_ALL);        //使能P5数字信号输入功能
 }
 
 
 
 | 
 |