HT67F489 系统配置

1. MCU系统初时化

typedef union{
    struct{
        unsigned char _16hz:1;
        unsigned char _8hz:1;
        unsigned char _4hz:1;
        unsigned char _2hz:1;
        unsigned char _1hz:1;
        unsigned char _05hz:1;
        unsigned char undefined:2;
    }TICK_BIT;
    unsigned char sys_tick_flag;
}SYS_TICK;
 

volatile SYS_TICK tick_flag;

/*@ 
 MCU系统,时钟等初时化处理
@*/
void init_SyS()
{
  
  _smod = 0xe1;    
              /*配置系统时钟,选用8M时钟,FH */
                              
   _wdtc = 0xaf;            //不使用看门狗
   _ctrl = 0x00;            //关闭看门狗ctrl寄存器                             
   _lvrc = 0x55;            //不使用低电压复位功能
   _lvdc = 0x00;            //不使用低电压检查功能
      
 // _fsubc= 0x55;                //LCD工作时钟
  _tbc  = 0xa3;                //必须初始化 
  tick_flag.sys_tick_flag = 0;
  
   _mf4e = 1;  //多功能中断使能
   _tb0e = 1;  //时基0中断使能
   _tb1e = 1;  //时基1中断使能
  _emi = 1;  //总中断使能
}

2.中断函数定义

DEFINE_ISR(isr_int0,0x04)
{
}

DEFINE_ISR(isr_int1,0x08)
{
}

DEFINE_ISR(isr_m1,0x10)
{
}
DEFINE_ISR(isr_m2,0x14)
{
    
}
DEFINE_ISR(isr_m3,0x18)
{
}
DEFINE_ISR(isr_adc,0x1c)
{
}
DEFINE_ISR(isr_uart,0x20)
{
}
DEFINE_ISR(isr_int2,0x24)
{
}
DEFINE_ISR(isr_int3,0x28)
{
}

/*@ 
 时基中断函数
@*/
DEFINE_ISR(isr_m4,0x2c)
{
    static unsigned char cnt = 0;
    _emi = 0; //关总中断
    if(_tb0f){
        
        tick_flag.TICK_BIT._16hz = 1;
    
        _tb0f = 0;
    }
    if(_tb1f)
    {
        tick_flag.TICK_BIT._2hz = 1;
        if((++cnt & 0x1)==0)
        {
            tick_flag.TICK_BIT._1hz = 1;
        }    
        _tb1f = 0;
    }
    _emi = 1; //开总中断
}

3.切换到快速时钟

/*@ 
 切换到快钟
@*/
void switchToHclk(void)
{
    _fsyson = 0;
    _smod = 0xe1;
    while(_hto != 1){
        GCC_NOP();
    }
}

4.切换到慢速时钟

/*@ 
 切换到慢钟
@*/
void switchToLclk(void)
{
    _lxtlp = 0;        // fast start mode
    _smod = 0x20;    //fsub LXT
    while(_lto != 1)
    {
        GCC_NOP();
    }
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风雨依依

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值