OpenEdv-开源电子网

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

F105和F103设置ADC时钟会产生的奇怪现象

[复制链接]

12

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
188
金钱
188
注册时间
2018-6-27
在线时间
28 小时
发表于 2019-9-15 17:58:29 | 显示全部楼层 |阅读模式
1金钱
F105是互联网型,使用宏定义 STM32F10X_CL,同时之前F103的程序是使用STM32F10X_HD,将F103的工程改成F105后,首先需要改这个宏定义,而且由于我F105的板子同F103的板子完全一样除了MCU,都是使用8MHZ晶振,因此也将 stm32f10x.h 文件中的#define HSE_VALUE    ((uint32_t)25000000) 改为了 8000000,且system_stm32f10x.c 文件中SetSysClockTo72(void)函数对应位置也改为 RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV2 | RCC_CFGR2_PLL2MUL10 |RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5); 1.png 2.png

这样原F103的程序已经完成迁移成F105的,测试大部分功能正常,但在一个使用延时等待读GPIO电位变化的地方出现异常,
然后屏蔽所有功能单独循环做
WRITE(PA0,HIGH);
delay(10);
WRITE(PA0,LOW);
delay(10);
通过抓波发现延迟时间变长了,延迟函数如下:


static inline void _delay_us(uint32_t usec) {
  uint32_t n = 1+ usec * 12;
        for(;n>0;n--)
                __nop();
}

static inline void delay(uint32_t msec){
        _delay_us(1000*msec);
}


同样的程序在F103中等待10ms的地方,在F105却要等待16ms,分别调试F103和F105的板子,HCK PCL ,所有时钟都是一样,系统时钟都是72MHZ。
奇怪的地方在此:在设置外设时钟的地方有个RCC_ADCCLKConfig(RCC_PCLK2_Div4); 去掉这个设置ADC时钟,F105

最佳答案

查看完整内容[请看2#楼]

没写完就发出来了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
188
金钱
188
注册时间
2018-6-27
在线时间
28 小时
 楼主| 发表于 2019-9-15 18:00:21 | 显示全部楼层
请管理员帮忙删掉此贴
回复

使用道具 举报

12

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
188
金钱
188
注册时间
2018-6-27
在线时间
28 小时
 楼主| 发表于 2019-9-15 17:58:30 | 显示全部楼层
没写完就发出来了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 10:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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