管理员
  
- 积分
- 165540
- 金钱
- 165540
- 注册时间
- 2010-12-1
- 在线时间
- 2117 小时
|
发表于 2013-6-8 10:22:33
|
显示全部楼层
你这和我的代码风格差太远了.
这些个东西,是你自己写的还是哪里来的?
我发现你的代码硬件仿真时,死在:Sub_RCC_SetSysClock里面了,死在这里:while(!Is_RCC_SWS_PLL);这里一直无法通过.
用了这么多位带操作,着实比较郁闷...你慢慢验证下这些位带操作的正确性先.
#ifndef __MYLIB_STM32F10X_RCC_H__
#define __MYLIB_STM32F10X_RCC_H__
#include "Mylib_STM32F10x_Base.h"
/*RCC->CR 时钟控制寄存器*/
#define Config_RCC_HSION_EN bitband(RCC_BASE,0x0,0)=1 //使用内部高速时钟源:使用(默认)
#define Config_RCC_HSION_DEN bitband(RCC_BASE,0x0,0)=0 //使用内部高速时钟源:不使用
#define Is_RCC_HSIRDY bitband(RCC_BASE,0x0,1)==1 //内部高速时钟源就绪标志:已就绪(默认)
#define Write_RCC_HSITRIM(dat) setbit(RCC->CR,4,4,dat) //调整内部高速时钟源调整
#define Write_RCC_HSICAL(dat) setbit(RCC->CR,8,8,dat) //内部高速时钟源校准
#define Config_RCC_HSEON_DEN bitband(RCC_BASE,0x0,16)=0 //使用外部高速时钟源:不使用(默认)
#define Config_RCC_HSEON_EN bitband(RCC_BASE,0x0,16)=1 //使用外部高速时钟源:使用
#define Is_RCC_HSERDY bitband(RCC_BASE,0x0,17)==1 //外部高速时钟源就绪标志:已就绪
#define Config_RCC_HSEBYP_0 bitband(RCC_BASE,0x0,18)=0 //外部高速时钟源旁路:无源晶振4-16M(默认)
#define Config_RCC_HSEBYP_1 bitband(RCC_BASE,0x0,18)=1 //外部高速时钟源旁路:有源晶振25M
#define Config_RCC_CSSON_DEN bitband(RCC_BASE,0x0,19)=0 //钟安源安全系统监测器:关闭(默认)
#define Config_RCC_CSSON_EN bitband(RCC_BASE,0x0,19)=1 //钟安源安全系统监测器:开启
#define Config_RCC_PLLON_DEN bitband(RCC_BASE,0x0,24)=0 //时钟源锁相环系统:关闭(默认)
#define Config_RCC_PLLON_EN bitband(RCC_BASE,0x0,24)=1 //时钟源锁相环系统:开启
#define Is_RCC_PLLRDY bitband(RCC_BASE,0x0,25)==1 //时钟源锁相环系统就绪标志:已就绪
/*RCC->CFGR 时钟配置寄存器*/
#define Config_RCC_SW_HSI setbit(RCC->CFGR,0,2,0x0) //选择系统时钟源:使用内部高速时钟源(默认)
#define Config_RCC_SW_HSE setbit(RCC->CFGR,0,2,0x1) //选择系统时钟源:使用外部高速时钟源
#define Config_RCC_SW_PLL setbit(RCC->CFGR,0,2,0x2) //选择系统时钟源:使用锁相环
#define Is_RCC_SWS_HSI (getbit(RCC->CFGR,2,2) == 0x0) //系统时钟切换状态:当前时钟源是内部高速时钟(默认)
#define Is_RCC_SWS_HSE (getbit(RCC->CFGR,2,2) == 0x1) //系统时钟切换状态:当前时钟源是外部高速时钟
#define Is_RCC_SWS_PLL (getbit(RCC->CFGR,2,2) == 0x2) //系统时钟切换状态:当前时钟源是锁相环
#define Config_RCC_HPRE_DIV1 setbit(RCC->CFGR,4,4,0x0) //AHB预分频:取 SYSCLK 不分频(默认)
#define Config_RCC_HPRE_DIV2 setbit(RCC->CFGR,4,4,0x8) //AHB预分频:取 SYSCLK 的2分频
#define Config_RCC_HPRE_DIV4 setbit(RCC->CFGR,4,4,0x9) //AHB预分频:取 SYSCLK 的4分频
#define Config_RCC_HPRE_DIV8 setbit(RCC->CFGR,4,4,0xA) //AHB预分频:取 SYSCLK 的8分频
#define Config_RCC_HPRE_DIV16 setbit(RCC->CFGR,4,4,0xB) //AHB预分频:取 SYSCLK 的16分频
#define Config_RCC_PPRE1_DIV1 setbit(RCC->CFGR,8,3,0x0) //APB1预分频:取 HCLK 不分频(默认)
#define Config_RCC_PPRE1_DIV2 setbit(RCC->CFGR,8,3,0x4) //APB1预分频:取 HCLK 的2分频
#define Config_RCC_PPRE1_DIV4 setbit(RCC->CFGR,8,3,0x5) //APB1预分频:取 HCLK 的4分频
#define Config_RCC_PPRE1_DIV8 setbit(RCC->CFGR,8,3,0x6) //APB1预分频:取 HCLK 的8分频
#define Config_RCC_PPRE1_DIV16 setbit(RCC->CFGR,8,3,0x7) //APB1预分频:取 HCLK 的16分频
#define Config_RCC_PPRE2_DIV1 setbit(RCC->CFGR,11,3,0x0) //APB2预分频:取 HCLK 不分频(默认)
#define Config_RCC_PPRE2_DIV2 setbit(RCC->CFGR,11,3,0x4) //APB2预分频:取 HCLK 的2分频
#define Config_RCC_PPRE2_DIV4 setbit(RCC->CFGR,11,3,0x5) //APB2预分频:取 HCLK 的4分频
#define Config_RCC_PPRE2_DIV8 setbit(RCC->CFGR,11,3,0x6) //APB2预分频:取 HCLK 的8分频
#define Config_RCC_PPRE2_DIV16 setbit(RCC->CFGR,11,3,0x7) //APB2预分频:取 HCLK 的16分频
#define Config_RCC_ADCPRE_DIV2 setbit(RCC->CFGR,14,2,0x0) //ADC预分频(全部):取  CLK 的2分频(默认)
#define Config_RCC_ADCPRE_DIV4 setbit(RCC->CFGR,14,2,0x1) //ADC预分频(全部):取  CLK 的4分频
#define Config_RCC_ADCPRE_DIV6 setbit(RCC->CFGR,14,2,0x2) //ADC预分频(全部):取  CLK 的6分频
#define Config_RCC_ADCPRE_DIV8 setbit(RCC->CFGR,14,2,0x3) //ADC预分频(全部):取  CLK 的8分频
#define Config_RCC_PLLSRC_HIS bitband(RCC_BASE,0x4,16)=0 //选择PLL的输入时钟源:2分频后的内部高速振荡器(默认)
#define Config_RCC_PLLSRC_PRE bitband(RCC_BASE,0x4,16)=1 //选择PLL的输入时钟源:不分频的PRE的输出
#define Config_RCC_PLLXTPRE_DIV1 bitband(RCC_BASE,0x4,17)=0 //选择对输入时钟:不分频(默认)
#define Config_RCC_PLLXTPRE_DIV2 bitband(RCC_BASE,0x4,17)=1 //选择对输入时钟:进行2分频
#define Config_RCC_PLLMUL_1 setbit(RCC->CFGR,18,4,0x0) //锁相环时钟的倍频系数:保留(默认)
#define Config_RCC_PLLMUL_4 setbit(RCC->CFGR,18,4,0x2) //锁相环时钟的倍频系数:4倍频
#define Config_RCC_PLLMUL_5 setbit(RCC->CFGR,18,4,0x3) //锁相环时钟的倍频系数:5倍频
#define Config_RCC_PLLMUL_6 setbit(RCC->CFGR,18,4,0x4) //锁相环时钟的倍频系数:6倍频
#define Config_RCC_PLLMUL_7 setbit(RCC->CFGR,18,4,0x5) //锁相环时钟的倍频系数:7倍频
#define Config_RCC_PLLMUL_8 setbit(RCC->CFGR,18,4,0x6) //锁相环时钟的倍频系数:8倍频
#define Config_RCC_PLLMUL_9 setbit(RCC->CFGR,18,4,0x7) //锁相环时钟的倍频系数:9倍频
#define Config_RCC_PLLMUL_6d5 setbit(RCC->CFGR,18,4,0xD) //锁相环时钟的倍频系数:6.5倍频
#define Config_RCC_OTGFSPRE_DIV3 bitband(RCC_BASE,0x4,22)=0 //全速USB OTG模式预分频:VCO时钟除3(默认)
#define Config_RCC_OTGFSPRE_DIV2 bitband(RCC_BASE,0x4,22)=1 //全速USB OTG模式预分频:VCO时钟除2
#define Config_RCC_MCO_DEN setbit(RCC->CFGR,24,4,0x0) //MCO微控制器时钟输出:无输出(默认)
#define Config_RCC_MCO_SYSCLK setbit(RCC->CFGR,24,4,0x4) //MCO微控制器时钟输出:系统时钟SYSCLK输出
#define Config_RCC_MCO_HSI setbit(RCC->CFGR,24,4,0x5) //MCO微控制器时钟输出:内部8M输出
#define Config_RCC_MCO_EXT25M setbit(RCC->CFGR,24,4,0x6) //MCO微控制器时钟输出:外部25M输出
#define Config_RCC_MCO_PLLDIV2 setbit(RCC->CFGR,24,4,0x7) //MCO微控制器时钟输出 LL时钟2分频输出
#define Config_RCC_MCO_PLL2 setbit(RCC->CFGR,24,4,0x8) //MCO微控制器时钟输出 LL2输出
#define Config_RCC_MCO_PLL3DIV2 setbit(RCC->CFGR,24,4,0x9) //MCO微控制器时钟输出 LL3时钟2分频输出
#define Config_RCC_MCO_XT1_25M setbit(RCC->CFGR,24,4,0xA) //MCO微控制器时钟输出:XT1外部25M输出(为以太网)
#define Config_RCC_MCO_PLL3 setbit(RCC->CFGR,24,4,0xB) //MCO微控制器时钟输出 LL3时钟输出
/*RCC->CIR 时钟中断寄存器*/
#define Is_RCC_LSIRDYF bitband(RCC_BASE,0x8,0)==1 //内部低速时钟 就绪中断标志位:有中断
#define Is_RCC_LSERDYF bitband(RCC_BASE,0x8,1)==1 //外部低速时钟 就绪中断标志位:有中断
#define Is_RCC_HSIRDYF bitband(RCC_BASE,0x8,2)==1 //内部高速时钟 就绪中断标志位:有中断
#define Is_RCC_HSERDYF bitband(RCC_BASE,0x8,3)==1 //外部高速时钟 就绪中断标志位:有中断
#define Is_RCC_PLLRDYF bitband(RCC_BASE,0x8,4)==1 //锁相环 就绪中断标志位:有中断
#define Is_RCC_CSSF bitband(RCC_BASE,0x8,7)==1 //时钟安全系统 就绪中断标志位:有中断
#define Config_RCC_LSIRDYIE_DEN bitband(RCC_BASE,0x8,8)=0 //内部低速时钟 就绪中断标志:屏蔽(默认)
#define Config_RCC_LSIRDYIE_EN bitband(RCC_BASE,0x8,8)=1 //内部低速时钟 就绪中断标志:开启
#define Config_RCC_LSERDYIE_DEN bitband(RCC_BASE,0x8,9)=0 //外部低速时钟 就绪中断标志:屏蔽(默认)
#define Config_RCC_LSERDYIE_EN bitband(RCC_BASE,0x8,9)=1 //外部低速时钟 就绪中断标志:开启
#define Config_RCC_HSIRDYIE_DEN bitband(RCC_BASE,0x8,10)=0 //内部高速时钟 就绪中断标志:屏蔽(默认)
#define Config_RCC_HSIRDYIE_EN bitband(RCC_BASE,0x8,10)=1 //内部高速时钟 就绪中断标志:开启
#define Config_RCC_HSERDYIE_DEN bitband(RCC_BASE,0x8,11)=0 //外部高速时钟 就绪中断标志:屏蔽(默认)
#define Config_RCC_HSERDYIE_EN bitband(RCC_BASE,0x8,11)=1 //外部高速时钟 就绪中断标志:开启
#define Config_RCC_PLLRDYIE_DEN bitband(RCC_BASE,0x8,12)=0 //锁相环 就绪中断标志:屏蔽(默认)
#define Config_RCC_PLLRDYIE_EN bitband(RCC_BASE,0x8,12)=1 //锁相环 就绪中断标志:开启
#define Do_RCC_LSIRDYC bitband(RCC_BASE,0x8,16)=1 //对 内部低速时钟 就绪中断标志位:清除
#define Do_RCC_LSERDYC bitband(RCC_BASE,0x8,17)=1 //对 外部低速时钟 就绪中断标志位:清除
#define Do_RCC_HSIRDYC bitband(RCC_BASE,0x8,18)=1 //对 内部高速时钟 就绪中断标志位:清除
#define Do_RCC_HSERDYC bitband(RCC_BASE,0x8,19)=1 //对 外部高速时钟 就绪中断标志位:清除
#define Do_RCC_PLLRDYC bitband(RCC_BASE,0x8,20)=1 //对 锁相环 就绪中断标志位:清除
#define Do_RCC_CSSC bitband(RCC_BASE,0x8,23)=1 //对 时钟安全系统 就绪中断标志位:清除
/*RCC->APB2RST APB2外设复位寄存器*/
#define Do_RCC_AFIORST {bitband(RCC_BASE,0xc,0)=1;bitband(RCC_BASE,0xc,0)=0;} //对AFIO辅助功能IO复位:执行
#define Do_RCC_IOPARST {bitband(RCC_BASE,0xc,2)=1;bitband(RCC_BASE,0xc,2)=0;} //对IOPA接口复位:执行
#define Do_RCC_IOPBRST {bitband(RCC_BASE,0xc,3)=1;bitband(RCC_BASE,0xc,3)=0;} //对IOPB接口复位:执行
#define Do_RCC_IOPCRST {bitband(RCC_BASE,0xc,4)=1;bitband(RCC_BASE,0xc,4)=0;} //对IOPC接口复位:执行
#define Do_RCC_IOPDRST {bitband(RCC_BASE,0xc,5)=1;bitband(RCC_BASE,0xc,5)=0;} //对IOPD接口复位:执行
#define Do_RCC_IOPERST {bitband(RCC_BASE,0xc,6)=1;bitband(RCC_BASE,0xc,6)=0;} //对IOPE接口复位:执行
#define Do_RCC_IOPFRST {bitband(RCC_BASE,0xc,7)=1;bitband(RCC_BASE,0xc,7)=0;} //对IOPF接口复位:执行
#define Do_RCC_IOPGRST {bitband(RCC_BASE,0xc,8)=1;bitband(RCC_BASE,0xc,8)=0;} //对IOPG接口复位:执行
#define Do_RCC_ADC1RST {bitband(RCC_BASE,0xc,9)=1;bitband(RCC_BASE,0xc,9)=0;} //对ADC1接口复位:执行
#define Do_RCC_ADC2RST {bitband(RCC_BASE,0xc,10)=1;bitband(RCC_BASE,0xc,10)=0;} //对ADC2接口复位:执行
#define Do_RCC_TIM1RST {bitband(RCC_BASE,0xc,11)=1;bitband(RCC_BASE,0xc,11)=0;} //对TIM1接口复位:执行
#define Do_RCC_SPI1RST {bitband(RCC_BASE,0xc,12)=1;bitband(RCC_BASE,0xc,12)=0;} //对SPI1接口复位:执行
#define Do_RCC_TIM8RST {bitband(RCC_BASE,0xc,13)=1;bitband(RCC_BASE,0xc,13)=0;} //对TIM8接口复位:执行
#define Do_RCC_USART1RST {bitband(RCC_BASE,0xc,14)=1;bitband(RCC_BASE,0xc,14)=0;} //对USART1接口复位:执行
#define Do_RCC_ADC3RST {bitband(RCC_BASE,0xc,15)=1;bitband(RCC_BASE,0xc,15)=0;} //对ADC3接口复位:执行
/*RCC->APB1RST APB1外设复位寄存器*/
#define Do_RCC_TIM2RST {bitband(RCC_BASE,0x10,0)=1;bitband(RCC_BASE,0x10,0)=0;} //对TIM2接口复位:执行
#define Do_RCC_TIM3RST {bitband(RCC_BASE,0x10,1)=1;bitband(RCC_BASE,0x10,1)=0;} //对TIM3接口复位:执行
#define Do_RCC_TIM4RST {bitband(RCC_BASE,0x10,2)=1;bitband(RCC_BASE,0x10,2)=0;} //对TIM4接口复位:执行
#define Do_RCC_TIM5RST {bitband(RCC_BASE,0x10,3)=1;bitband(RCC_BASE,0x10,3)=0;} //对TIM5接口复位:执行
#define Do_RCC_TIM6RST {bitband(RCC_BASE,0x10,4)=1;bitband(RCC_BASE,0x10,4)=0;} //对TIM6接口复位:执行
#define Do_RCC_TIM7RST {bitband(RCC_BASE,0x10,5)=1;bitband(RCC_BASE,0x10,5)=0;} //对TIM7接口复位:执行
#define Do_RCC_WWDGRST {bitband(RCC_BASE,0x10,11)=1;bitband(RCC_BASE,0x10,11)=0;} //对WWDG接口复位:执行
#define Do_RCC_SPI2RST {bitband(RCC_BASE,0x10,14)=1;bitband(RCC_BASE,0x10,14)=0;} //对SPI2接口复位:执行
#define Do_RCC_SPI3RST {bitband(RCC_BASE,0x10,15)=1;bitband(RCC_BASE,0x10,15)=0;} //对SPI3接口复位:执行
#define Do_RCC_UART2RST {bitband(RCC_BASE,0x10,17)=1;bitband(RCC_BASE,0x10,17)=0;} //对UART2接口复位:执行
#define Do_RCC_UART3RST {bitband(RCC_BASE,0x10,18)=1;bitband(RCC_BASE,0x10,18)=0;} //对UART3接口复位:执行
#define Do_RCC_UART4RST {bitband(RCC_BASE,0x10,19)=1;bitband(RCC_BASE,0x10,19)=0;} //对UART4接口复位:执行
#define Do_RCC_UART5RST {bitband(RCC_BASE,0x10,20)=1;bitband(RCC_BASE,0x10,20)=0;} //对UART5接口复位:执行
#define Do_RCC_I2C1RST {bitband(RCC_BASE,0x10,21)=1;bitband(RCC_BASE,0x10,21)=0;} //对I2C1接口复位:执行
#define Do_RCC_I2C2RST {bitband(RCC_BASE,0x10,22)=1;bitband(RCC_BASE,0x10,22)=0;} //对I2C2接口复位:执行
#define Do_RCC_USBRST {bitband(RCC_BASE,0x10,23)=1;bitband(RCC_BASE,0x10,23)=0;} //对USB接口复位:执行
#define Do_RCC_CANRST {bitband(RCC_BASE,0x10,25)=1;bitband(RCC_BASE,0x10,25)=0;} //对CAN接口复位:执行
#define Do_RCC_BKPRST {bitband(RCC_BASE,0x10,27)=1;bitband(RCC_BASE,0x10,27)=0;} //对备份接口复位:执行
#define Do_RCC_PWRRST {bitband(RCC_BASE,0x10,28)=1;bitband(RCC_BASE,0x10,28)=0;} //对电源接口复位:执行
#define Do_RCC_DACRST {bitband(RCC_BASE,0x10,29)=1;bitband(RCC_BASE,0x10,29)=0;} //对DAC接口复位:执行
/*RCC->AHBENR AHB 外设时钟使能寄存器*/
#define Config_RCC_DMA1EN_DEN bitband(RCC_BASE,0x14,0)=0 //DMA1时钟:关闭(默认)
#define Config_RCC_DMA2EN_DEN bitband(RCC_BASE,0x14,1)=0 //DMA2时钟:关闭(默认)
#define Config_RCC_SRAMEN_DEN bitband(RCC_BASE,0x14,2)=0 //SRAM时钟:关闭
#define Config_RCC_FLITFEN_DEN bitband(RCC_BASE,0x14,4)=0 //FLITF时钟:关闭
#define Config_RCC_CRCEN_DEN bitband(RCC_BASE,0x14,6)=0 //CRC时钟:关闭(默认)
#define Config_RCC_FSMCEN_DEN bitband(RCC_BASE,0x14,8)=0 //FSMC时钟:关闭(默认)
#define Config_RCC_SDIOEN_DEN bitband(RCC_BASE,0x14,10)=0 //SDIO时钟:关闭(默认)
#define Config_RCC_DMA1EN_EN bitband(RCC_BASE,0x14,0)=1 //DMA1时钟:开启
#define Config_RCC_DMA2EN_EN bitband(RCC_BASE,0x14,1)=1 //DMA2时钟:开启
#define Config_RCC_SRAMEN_EN bitband(RCC_BASE,0x14,2)=1 //SRAM时钟:开启(默认)
#define Config_RCC_FLITFEN_EN bitband(RCC_BASE,0x14,4)=1 //FLITF时钟:开启(默认)
#define Config_RCC_CRCEN_EN bitband(RCC_BASE,0x14,6)=1 //CRC时钟:开启
#define Config_RCC_FSMCEN_EN bitband(RCC_BASE,0x14,8)=1 //FSMC时钟:开启
#define Config_RCC_SDIOEN_EN bitband(RCC_BASE,0x14,10)=1 //SDIO时钟:开启
/*RCC->APB2ENR APB2 外设时钟使能寄存器*/
#define Config_RCC_AFIOEN_DEN bitband(RCC_BASE,0x18,0)=0 //AFIO接口时钟:关闭(默认)
#define Config_RCC_IOPAEN_DEN bitband(RCC_BASE,0x18,2)=0 //IOPA接口时钟:关闭(默认)
#define Config_RCC_IOPBEN_DEN bitband(RCC_BASE,0x18,3)=0 //IOPB接口时钟:关闭(默认)
#define Config_RCC_IOPCEN_DEN bitband(RCC_BASE,0x18,4)=0 //IOPC接口时钟:关闭(默认)
#define Config_RCC_IOPDEN_DEN bitband(RCC_BASE,0x18,5)=0 //IOPD接口时钟:关闭(默认)
#define Config_RCC_IOPEEN_DEN bitband(RCC_BASE,0x18,6)=0 //IOPE接口时钟:关闭(默认)
#define Config_RCC_IOPFEN_DEN bitband(RCC_BASE,0x18,7)=0 //IOPF接口时钟:关闭(默认)
#define Config_RCC_IOPGEN_DEN bitband(RCC_BASE,0x18,8)=0 //IOPG接口时钟:关闭(默认)
#define Config_RCC_ADC1EN_DEN bitband(RCC_BASE,0x18,9)=0 //ADC1接口时钟:关闭(默认)
#define Config_RCC_ADC2EN_DEN bitband(RCC_BASE,0x18,10)=0 //ADC2接口时钟:关闭(默认)
#define Config_RCC_TIM1EN_DEN bitband(RCC_BASE,0x18,11)=0 //TIM1接口时钟:关闭(默认)
#define Config_RCC_SPI1EN_DEN bitband(RCC_BASE,0x18,12)=0 //SPI1接口时钟:关闭(默认)
#define Config_RCC_TIM8EN_DEN bitband(RCC_BASE,0x18,13)=0 //TIM8接口时钟:关闭(默认)
#define Config_RCC_UART1EN_DEN bitband(RCC_BASE,0x18,14)=0 //USART1接口时钟:关闭(默认)
#define Config_RCC_ADC3EN_DEN bitband(RCC_BASE,0x18,15)=0 //ADC3接口时钟:关闭(默认)
#define Config_RCC_AFIOEN_EN bitband(RCC_BASE,0x18,0)=1 //AFIO接口时钟:开启
#define Config_RCC_IOPAEN_EN bitband(RCC_BASE,0x18,2)=1 //IOPA接口时钟:开启
#define Config_RCC_IOPBEN_EN bitband(RCC_BASE,0x18,3)=1 //IOPB接口时钟:开启
#define Config_RCC_IOPCEN_EN bitband(RCC_BASE,0x18,4)=1 //IOPC接口时钟:开启
#define Config_RCC_IOPDEN_EN bitband(RCC_BASE,0x18,5)=1 //IOPD接口时钟:开启
#define Config_RCC_IOPEEN_EN bitband(RCC_BASE,0x18,6)=1 //IOPE接口时钟:开启
#define Config_RCC_IOPFEN_EN bitband(RCC_BASE,0x18,7)=1 //IOPF接口时钟:开启
#define Config_RCC_IOPGEN_EN bitband(RCC_BASE,0x18,8)=1 //IOPG接口时钟:开启
#define Config_RCC_ADC1EN_EN bitband(RCC_BASE,0x18,9)=1 //ADC1接口时钟:开启
#define Config_RCC_ADC2EN_EN bitband(RCC_BASE,0x18,10)=1 //ADC2接口时钟:开启
#define Config_RCC_TIM1EN_EN bitband(RCC_BASE,0x18,11)=1 //TIM1接口时钟:开启
#define Config_RCC_SPI1EN_EN bitband(RCC_BASE,0x18,12)=1 //SPI1接口时钟:开启
#define Config_RCC_TIM8EN_EN bitband(RCC_BASE,0x18,13)=1 //TIM8接口时钟:开启
#define Config_RCC_UART1EN_EN bitband(RCC_BASE,0x18,14)=1 //USART1接口时钟:开启
#define Config_RCC_ADC3EN_EN bitband(RCC_BASE,0x18,15)=1 //ADC3接口时钟:开启
/*RCC->APB2ENR APB1 外设时钟使能寄存器*/
#define Config_RCC_TIM2EN_DEN bitband(RCC_BASE,0x1c,0)=0 //TIM2时钟:关闭(默认)
#define Config_RCC_TIM3EN_DEN bitband(RCC_BASE,0x1c,1)=0 //TIM3时钟:关闭(默认)
#define Config_RCC_TIM4EN_DEN bitband(RCC_BASE,0x1c,2)=0 //TIM4时钟:关闭(默认)
#define Config_RCC_TIM5EN_DEN bitband(RCC_BASE,0x1c,3)=0 //TIM5时钟:关闭(默认)
#define Config_RCC_TIM6EN_DEN bitband(RCC_BASE,0x1c,4)=0 //TIM6时钟:关闭(默认)
#define Config_RCC_TIM7EN_DEN bitband(RCC_BASE,0x1c,5)=0 //TIM7时钟:关闭(默认)
#define Config_RCC_WWDGEN_DEN bitband(RCC_BASE,0x1c,11)=0 //WWDG时钟:关闭(默认)
#define Config_RCC_SPI2EN_DEN bitband(RCC_BASE,0x1c,14)=0 //SPI2时钟:关闭(默认)
#define Config_RCC_SPI3EN_DEN bitband(RCC_BASE,0x1c,15)=0 //SPI3时钟:关闭(默认)
#define Config_RCC_UART2EN_DEN bitband(RCC_BASE,0x1c,17)=0 //UART2时钟:关闭(默认)
#define Config_RCC_UART3EN_DEN bitband(RCC_BASE,0x1c,18)=0 //UART3时钟:关闭(默认)
#define Config_RCC_UART4EN_DEN bitband(RCC_BASE,0x1c,19)=0 //UART4时钟:关闭(默认)
#define Config_RCC_UART5EN_DEN bitband(RCC_BASE,0x1c,20)=0 //UART5时钟:关闭(默认)
#define Config_RCC_I2C1EN_DEN bitband(RCC_BASE,0x1c,21)=0 //I2C1时钟:关闭(默认)
#define Config_RCC_I2C2EN_DEN bitband(RCC_BASE,0x1c,22)=0 //I2C2时钟:关闭(默认)
#define Config_RCC_USBEN_DEN bitband(RCC_BASE,0x1c,23)=0 //USB时钟:关闭(默认)
#define Config_RCC_CANEN_DEN bitband(RCC_BASE,0x1c,25)=0 //CAN时钟:关闭(默认)
#define Config_RCC_BKPEN_DEN bitband(RCC_BASE,0x1c,27)=0 //备份时钟:关闭(默认)
#define Config_RCC_PWREN_DEN bitband(RCC_BASE,0x1c,28)=0 //电源时钟:关闭(默认)
#define Config_RCC_DACEN_DEN bitband(RCC_BASE,0x1c,29)=0 //DAC时钟:关闭(默认)
#define Config_RCC_TIM2EN_EN bitband(RCC_BASE,0x1c,0)=1 //TIM2时钟:开启
#define Config_RCC_TIM3EN_EN bitband(RCC_BASE,0x1c,1)=1 //TIM3时钟:开启
#define Config_RCC_TIM4EN_EN bitband(RCC_BASE,0x1c,2)=1 //TIM4时钟:开启
#define Config_RCC_TIM5EN_EN bitband(RCC_BASE,0x1c,3)=1 //TIM5时钟:开启
#define Config_RCC_TIM6EN_EN bitband(RCC_BASE,0x1c,4)=1 //TIM6时钟:开启
#define Config_RCC_TIM7EN_EN bitband(RCC_BASE,0x1c,5)=1 //TIM7时钟:开启
#define Config_RCC_WWDGEN_EN bitband(RCC_BASE,0x1c,11)=1 //WWDG时钟:开启
#define Config_RCC_SPI2EN_EN bitband(RCC_BASE,0x1c,14)=1 //SPI2时钟:开启
#define Config_RCC_SPI3EN_EN bitband(RCC_BASE,0x1c,15)=1 //SPI3时钟:开启
#define Config_RCC_UART2EN_EN bitband(RCC_BASE,0x1c,17)=1 //UART2时钟:开启
#define Config_RCC_UART3EN_EN bitband(RCC_BASE,0x1c,18)=1 //UART3时钟:开启
#define Config_RCC_UART4EN_EN bitband(RCC_BASE,0x1c,19)=1 //UART4时钟:开启
#define Config_RCC_UART5EN_EN bitband(RCC_BASE,0x1c,20)=1 //UART5时钟:开启
#define Config_RCC_I2C1EN_EN bitband(RCC_BASE,0x1c,21)=1 //I2C1时钟:开启
#define Config_RCC_I2C2EN_EN bitband(RCC_BASE,0x1c,22)=1 //I2C2时钟:开启
#define Config_RCC_USBEN_EN bitband(RCC_BASE,0x1c,23)=1 //USB时钟:开启
#define Config_RCC_CANEN_EN bitband(RCC_BASE,0x1c,25)=1 //CAN时钟:开启
#define Config_RCC_BAPEN_EN bitband(RCC_BASE,0x1c,27)=1 //备份时钟:开启
#define Config_RCC_PWREN_EN bitband(RCC_BASE,0x1c,28)=1 //电源时钟:开启
#define Config_RCC_DACEN_EN bitband(RCC_BASE,0x1c,29)=1 //DAC时钟:开启
/*RCC->BDCR 备份域控制寄存器*/
#define Config_RCC_LSEON_DEN bitband(RCC_BASE,0x20,0)=0 //外部低速振荡器:关闭(默认)
#define Config_RCC_LSEON_EN bitband(RCC_BASE,0x20,0)=1 //外部低速振荡器:开启
#define Is_RCC_LESRDY bitband(RCC_BASE,0x20,1)==1 //外部低速振荡器:已就绪
#define Config_RCC_LSEBYP_DEN bitband(RCC_BASE,0x20,2)=0 //外部低速时钟振荡器旁路:无旁路(默认)
#define Config_RCC_LSEBYP_EN bitband(RCC_BASE,0x20,2)=1 //外部低速时钟振荡器旁路:有旁路
#define Config_RCC_RTCSEL_NON setbit(RCC->BDCR,8,2,0x0) //RTC时钟源选择:无时钟(默认)
#define Config_RCC_RTCSEL_LSE setbit(RCC->BDCR,8,2,0x1) //RTC时钟源选择:选择外部低速时钟源
#define Config_RCC_RTCSEL_LSI setbit(RCC->BDCR,8,2,0x2) //RTC时钟源选择:选择内部低速时钟源
#define Config_RCC_RTCSEL_HSEDIV128 setbit(RCC->BDCR,8,2,0x3) //RTC时钟源选择:外部高速时钟源的128分频
#define Config_RCC_RTCEN_DEN bitband(RCC_BASE,0x20,15)=0 //RTC时钟:关闭(默认)
#define Config_RCC_RTCEN_EN bitband(RCC_BASE,0x20,15)=1 //RTC时钟:开启
#define Do_RTC_BDRST bitband(RCC_BASE,0x20,16)=1 //复位备份域:复位
#endif |
|