你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

求助系统时钟配置

[复制链接]
hhhhhhhaa 提问时间:2020-4-29 14:57 /
如题,在学习系统时钟,遇到了一个疑问 在系统时钟配置里有一句话是这么写的
RCC->CFGR &= (uint32_t)((uint32_t) ~(RCC_CFGR_PLLSRC |RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
其中RCC_CFGR_PLLSRC =0x00010000
  RCC_CFGR_PLLXTPRE  =0x00020000
  RCC_CFGR_PLLMULL    =0x003C0000
RCC_CFGR_PLLSRC |RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL=0x003F0000
~0x003F0000=0xFFC0FFFF
二进制的话是 1111 1111 1100 0000 1111 1111 1111 1111
看手册位
21:18 PLLMUL: PLL 倍频系数 (PLL multiplication factor)
由软件设置来确定 PLL 倍频系数。只有在 PLL 关闭的情况下才可被写入。
注意: PLL 输出最大频率不能超过 48 MHz.
0000: PLL  输入时钟的 2 倍频
0001: PLL  输入时钟的 3 倍频
0010: PLL  输入时钟的 4 倍频
0011: PLL  输入时钟的 5 倍频
0100: PLL  输入时钟的 6 倍频
0101: PLL  输入时钟的 7 倍频
0110: PLL  输入时钟的 8 倍频
0111: PLL  输入时钟的 9 倍频
1000: PLL  输入时钟的 10 倍频
1001: PLL  输入时钟的 11 倍频
1010: PLL  输入时钟的 12 倍频
1011: PLL  输入时钟的 13 倍频
1100: PLL  输入时钟的 14 倍频
1101: PLL  输入时钟的 15 倍频
1110: PLL  输入时钟的 16 倍频
1111: PLL  输入时钟的 16 倍频
17  PLLXTPRE: HSE 分频器作为 PLL 输入 (HSE divider for PLL input clock)
由软件置 1 或清 0 来分频 HSE 后作为 PLL 输入时钟。只能在关闭 PLL 时才能写入
此位。
注 : 该位与时钟配置寄存器 2(RCC_CFGR2) 中的 PREDIV 最低位是一样的 ( 为了兼
容其他 STM32 产品 )
0: HSE 不分频
1: HSE 2 分频
16 PLLSRC: PLL 输入时钟源 (PLL entry clock source)
由软件置’ 1 ’或清’ 0 ’来选择 PLL 输入时钟源。只能在关闭 PLL 时才能写入此位。
0 : HIS/2  作为 PLL 输入时钟
1 : HSE/PREDIV  作为 PLL 输入时钟 ( 参考 7.4.12 章节的时钟配置寄存器 2)
现在这种情况的话第16位是0 那是不是就是用的内部时钟?
顺便说一下我用的是STM32F030的单片机
收藏 评论9 发布时间:2020-4-29 14:57

举报

9个回答
hhhhhhhaa 回答时间:2020-5-15 16:58:18
结题,是我配置的问题,没有配置好 STM32F030就没有定时器3哈哈

评分

参与人数 1ST金币 +6 收起 理由
+ 6 很好的一个坛友。自学成才。

查看全部评分

hhhhhhhaa 回答时间:2020-4-29 14:58:29
自己回答^_^
hhhhhhhaa 回答时间:2020-4-29 15:18:02
好吧,还是我自己回答吧,这句话的意思是把第16-21位清零
下一句话
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE| RCC_CFGR_PLLMULL9);
把相应的位置1 这样就能配置了
hhhhhhhaa 回答时间:2020-4-30 15:59:07
现在厉害了,是这样的,程序是从网上找的一个keil4的,用现在keil5的编译成功,然后软件仿真,报错
*** error 65: access violation at 0x40021000 : no 'read' permission
*** error 65: access violation at 0x40021000 : no 'write' permission
看了一下,卡到了 RCC->CFGR &= (uint32_t)0xF8FFB80C;
hhhhhhhaa 回答时间:2020-4-30 15:59:40
网上说改DEBUG里的东西,也按照那个改了,还是不行
hhhhhhhaa 回答时间:2020-4-30 15:59:56
有知道是什么情况的吗
hhhhhhhaa 回答时间:2020-4-30 16:03:04
我配置定时器3 输出比较  翻转模式 也没有脉冲输出
hhhhhhhaa 回答时间:2020-4-30 16:04:57
  1. void TIM3_PWM_Init(uint16_t period, uint16_t prescaler)
  2. {
  3.                         TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  4.                         TIM_OCInitTypeDef       TIM_OCInitStructure;
  5.                         /* ¶¨ÒåǶÌ×ÏòÁ¿ÖжϿØÖÆÆ÷³õʼ»¯½á¹¹Ìå±äÁ¿ */
  6.                         NVIC_InitTypeDef  NVIC_InitStructure;
  7.                         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);         //ʹÄܶ¨Ê±Æ÷3ʱÖÓ
  8.           
  9.           
  10.                         NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;//ÅäÖÃÖжÏÊÇÄĸö
  11.                         NVIC_InitStructure.NVIC_IRQChannelPriority=2;//ÅäÖÃÖжÏÓÅÏȼ¶
  12.                         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//ÖжÏʹÄÜ
  13.                         NVIC_Init(&NVIC_InitStructure);                                /* ³õʼ»¯ÅäÖÃǶÌ×ÏòÁ¿ÖжϿØÖÆÆ÷ */

  14.                         TIM_TimeBaseStructure.TIM_Period        = 0xFFFF;            //ÉèÖÃ×Ô¶¯ÖØ×°ÖÜÆÚÖµ
  15.                         TIM_TimeBaseStructure.TIM_Prescaler     = 3;                //ÉèÖÃÔ¤·ÖƵֵ
  16.                         TIM_TimeBaseStructure.TIM_ClockDivision = 0;                 //ÉèÖÃʱÖÓ·Ö¸î
  17.                         TIM_TimeBaseStructure.TIM_CounterMode   = TIM_CounterMode_Up;//ÏòÉϼÆÊý
  18.                         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);              //³õʼ»¯¶¨Ê±Æ÷3
  19.                        
  20.                         TIM_OCInitStructure.TIM_OCMode      = TIM_OCMode_Toggle;     //±È½ÏÊä³ö·­×ªÄ£Ê½
  21.                         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//±È½ÏÊä³öʹÄÜ
  22.                         TIM_OCInitStructure.TIM_OCPolarity  = TIM_OCPolarity_High;   //Êä³ö¸ß
  23.                         TIM_OCInitStructure.TIM_Pulse=2000;                           //ÅäÖñȽÏÊä³öÂö³å¿í¶È£¬¼´¼ÆÊýÆ÷µÄÖµÓëÂö³å¿í¶ÈÏàµÈµÄʱºòµçƽ·¢Éú·­×ª
  24.                         TIM_OC1Init(TIM3, &TIM_OCInitStructure);                     //³õʼ»¯TIM3µÄͨµÀ1  Í¨µÀ1-4·Ö±ðÊÇTIM_OC1Init()~TIM_OC4Init()
  25.                        
  26.                         TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Disable);            //ʹÄÜԤװÔؼĴæÆ÷
  27.                         TIM_ITConfig(TIM3,TIM_IT_CC1,ENABLE);                         //ʹÄܶ¨Ê±Æ÷ÖжÏ
  28.                         TIM_Cmd(TIM3, ENABLE);                                        //ʹÄܶ¨Ê±Æ÷3   
  29.        
  30. }
  31. uint32_t a=0;
  32. void TIM3_IRQHandler()
  33.                 {
  34.                         if (TIM_GetITStatus(TIM3, TIM_IT_CC1) != RESET)
  35.                         {
  36.                                  /* Clear TIM3 Capture Compare1 interrupt pending bit*/
  37.                                         TIM_ClearITPendingBit(TIM3, TIM_IT_CC1);
  38.                                   TIM_SetCounter(TIM3,0);
  39.                                   a=~a;
  40.                                         TIM_ClearFlag(TIM3,TIM_FLAG_CC1);
  41.                         }
  42.                 }

  43.                
复制代码
hhhhhhhaa 回答时间:2020-4-30 16:05:56
我想仿真看看a的电平变化,结果仿真就在那里卡住了

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版