123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- #include <REGtenxTM52F1386.h>
- #include <intrins.h>
- #include "TM52F1386_bsp.h"
- /**********************************************************************************************************
- **函数名称 bsp_clock_init()
- **函数描述 :设置内部FRC/2为系统时钟
- **输 入 :无
- **输 出 :无
- **说 明 :快时钟系统主频为 18.432/2M 默认二分频
- **********************************************************************************************************/
- void bsp_clock_init()
- {
- SELFCK = 0; //切换到慢时钟
-
- CLKCON = 0x02; //时钟二分频
- // CLKCON = 0x03; //时钟一分频
-
- STPPCK = 0; //开启部分模块使用快时钟
- STPFCK = 0; //开启快时钟
- SELFCK = 1; //切换到快时钟
- }
- /**********************************************************************************************************
- **函数名称 bsp_FXT_clock_init()
- **函数描述 :设置FXT外部快速晶体振荡器/2为系统时钟
- **输 入 :无
- **输 出 :无
- **说 明 :注意 P20 P21需要配置为接外部快速晶振
- **********************************************************************************************************/
- void bsp_FXT_clock_init()
- {
- SELFCK = 0; //切换到慢时钟
- CLKCON = 0x02; //时钟二分频
- // CLKCON = 0x03; //时钟一分频
- FCKTYPE = 1; //FXT
- STPPCK = 0; //开启快时钟
- STPFCK = 0; //开启部分模块使用快时钟
- //延时2ms等待晶体振荡器稳定
- bsp_delay_ms(2);
- SELFCK = 1; //切换到快时钟
- }
- /**********************************************************************************************************
- **函数名称 bsp_SXT_clock_init()
- **函数描述 :设置SXT外部慢速晶体振荡器/2为系统时钟
- **输 入 :无
- **输 出 :无
- **说 明 :注意 P20 P21需要配置为接外部快速晶振
- **********************************************************************************************************/
- void bsp_SXT_clock_init()
- {
- SELFCK = 0; //切换到慢时钟
-
- CLKCON = 0x02; //时钟二分频
- // CLKCON = 0x03; //时钟一分频
- STPPCK = 0; //开启快时钟
- STPFCK = 0; //开启部分模块使用快时钟
- SELFCK = 1; //切换到快时钟
- SCKTYPE = 1; //SXT
- SELFCK = 0; //切换到慢时钟
- }
- /**********************************************************************************************************
- **函数名称 bsp_delay_100us()
- **函数描述 :100us单位延时函数
- **输 入 :
- **输 出 :无
- **说 明 :基于内部时钟二分频计算,非精确延时
- **********************************************************************************************************/
- void bsp_delay_100us(unsigned int cnt) //该函数不是精确延时,根据内部时钟FRC二分频计算得来的
- {
- unsigned int i;
- unsigned char delay_cnt;
- for(i = 0;i<cnt;i++)
- {
- delay_cnt = 23;
- while(delay_cnt--)
- {
- delay_10nop();
- }
- }
- }
- /**********************************************************************************************************
- **函数名称 bsp_delay_100us()
- **函数描述 :100us单位延时函数
- **输 入 :
- **输 出 :无
- **说 明 :基于内部时钟二分频计算,非精确延时
- **********************************************************************************************************/
- void bsp_delay_ms(unsigned int ms) //该函数不是精确延时,根据内部时钟FRC二分频计算得来的
- {
- unsigned int i;
- unsigned char delay_cnt;
- for(i = 0;i<ms;i++)
- {
- delay_cnt =95;
- while(delay_cnt--)
- {
- delay_10nop();
- delay_10nop();
- delay_10nop();
- delay_10nop();
- }
- }
- }
|