OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5391|回复: 5

求大侠帮忙看看这程序 --自己解决了

[复制链接]

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2013-5-14
在线时间
4 小时
发表于 2013-6-8 09:48:26 | 显示全部楼层 |阅读模式
我第一次自己写的程序,内容有点多,贴不出来,就上传附件来了。有哪位大侠能帮帮忙看看是程序问题还是工程问题,为什么下到板上就没反应呢?板子肯定是好的,下例程运行是正常的

感谢原子哥的提醒,问题解决了

RVMDK.rar

403.62 KB, 下载次数: 108

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
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
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2013-5-14
在线时间
4 小时
 楼主| 发表于 2013-6-8 10:41:48 | 显示全部楼层
啊,原来是这样啊,我就知道应该要买仿真器,当时这板是公司给买的,没带仿真器真郁闷。平时一直只能用软件仿真,就是看不出来哪里出了问题,每次都是过得很顺利的。
这些代码都是边看手册边学着写的,读书没学过编程,就按照自己的理解,写的一些代码,学ARM没到一个月,风格是另类了点
回复 支持 反对

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2013-5-14
在线时间
4 小时
 楼主| 发表于 2013-6-9 20:31:45 | 显示全部楼层
偶的天啊!终于找到原因了!!
原来是这里出问题了:

#define Config_FLASH_LATENCY_1  setbit(FLASH->ACR,0,3,0x0)
#define Config_FLASH_LATENCY_2  setbit(FLASH->ACR,0,3,0x0)
#define Config_FLASH_LATENCY_3  setbit(FLASH->ACR,0,3,0x0)

if (sysclk>48) Config_FLASH_LATENCY_3;
else if (sysclk>24) Config_FLASH_LATENCY_2;
else Config_FLASH_LATENCY_1;

FLASH控制寄存器我的确是设好了,其他代码检查了一遍又一遍也没发现有错,错就错在原来是临时定义宏的时候参数忘了修改!妈的,水越浅越容易翻船
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-10 00:42:11 | 显示全部楼层
回复【4楼】lokliang:
---------------------------------
你这搞得太另类了...
别人说我玩寄存器是另类,你这比我还另类....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2013-5-14
在线时间
4 小时
 楼主| 发表于 2013-6-10 08:36:19 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原子哥睡得还真晚啊。我刚接触编程两个多月,ARM是一个月,所以不知道怎样的编程思想才算规范,没办法,一直都没有老师。
这样写代码是因为想熟悉寄存器,如果能自己写出个函数库,说明我对片上外设至少是了解的。以后用起来肯定会得心应手。官方的函数库我不打算用,但打算参考和模仿,最少要学着写一遍
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 22:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表