OpenEdv-开源电子网

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

分享STM32F030F4P6时钟配置

[复制链接]

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
发表于 2020-4-29 13:46:51 | 显示全部楼层 |阅读模式
开始看系统时钟其实是云里雾里,不知道从哪里看,那好从手册开始看  
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-4-29 13:47:32 | 显示全部楼层
既然是手册,系统时钟树上一堆的英文,实在头疼,那还是看下去吧
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-4-29 13:48:52 | 显示全部楼层
用外部时钟8M的   接口的话是OSC_OUT  OSC_IN
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-4-29 13:50:19 | 显示全部楼层
时钟进来了,那就要通过PREDIV 也就是是不是分频了 pre预div 分频除法 ,对进来的时钟是不是要÷
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-4-29 13:52:05 | 显示全部楼层
下一步进来看,进入了PLLSRC   (PLL entry clock source)通过PLL选择时钟源,是内部时钟还是外部时钟
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-4-29 13:53:30 | 显示全部楼层
既然我用的是外部时钟,肯定用外部时钟了,下一步就进入到了PLLMUL PLL 倍频系数 (PLL multiplication factor) 也就是要×了8M*6
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-4-29 13:54:27 | 显示全部楼层
倍频以后进入SW选择 系统时钟切换 (System clock switch) 选择是内部时钟还是外部时钟
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-4-29 13:55:40 | 显示全部楼层
好了,接下来就是给SYSCLK的设置了
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-4-29 13:58:29 | 显示全部楼层
看到这,我还是晕的 还是从启动文件里开始看吧 启动文件startup_stm32f10x_cl.s(启动文件) → SystemInit() →  SetSysClock () → SetSysClock()到了这里就看到了启动文件的时钟配置了
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-4-29 13:59:26 | 显示全部楼层
从第一行开始// ① 使能 HSE,并等待 HSE 稳定
6 RCC->CR |= ((uint32_t)RCC_CR_HSEON);
7
8 // 等待 HSE 启动稳定,并做超时处理
9 do {
10 HSEStatus = RCC->CR & RCC_CR_HSERDY;
11 StartUpCounter++;
12  }  while  ((HSEStatus  ==  0)
&&(StartUpCounter !=HSE_STARTUP_TIMEOUT));
13
14 if ((RCC->CR & RCC_CR_HSERDY) != RESET) {
15 HSEStatus = (uint32_t)0x01;
16 } else {
17 HSEStatus = (uint32_t)0x00;
18 }
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-4-29 14:02:29 | 显示全部楼层
使能 这个可以看懂 也就是给RCC的CR寄存器赋值  RCC->CR |= ((uint32_t)RCC_CR_HSEON);  这个分析一下吧,|= 是什么意思呢,我的理解就是CR寄存器的数值与RCC_CR_HSEON这个宏定义的值按位或 然后把值赋值给CR寄存器
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-4-29 14:03:38 | 显示全部楼层
第二个等待也是一样的  如果没有稳定的话就继续等,等到超时了就退出  超时退出肯定是错误的,所以就没了
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-4-29 14:04:35 | 显示全部楼层
下面就是重点了,如果稳定了,那么就开始配置寄存器,配置哪个呢 // 使能 FLASH 预存取缓冲区 */
24 FLASH->ACR |= FLASH_ACR_PRFTBE;   这个不知道是啥意思,不管了
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-4-29 14:14:37 | 显示全部楼层
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC| RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
这一行其实是我比较疑惑的地方     RCC_CFGR_PLLSRC=0x0001 0000
                                                 RCC_CFGR_PLLXTPRE=0x0002 0000
                                                  RCC_CFGR_PLLMULL=0x003C 0000
这三个数或的值是3F 0000 然后取反是FFC0 FFFF
然后数值与RCC的CFGR寄存器进行按位与后把值赋值给CFGR  那我们看一下C0  FFFF  写成二进制就是1100 0000 1111 1111 1111 1111
从第16位开始到第21位都是0  也就是不管CFGR的第16-21位数是多少,现在都要变成000000  那我们回过头来看手册  
位 16 PLLSRC: PLL 输入时钟源 (PLL entry clock source)
     由软件置’ 1 ’或清’ 0 ’来选择 PLL 输入时钟源。只能在关闭 PLL 时才能写入此位。
     0 : HIS/2  作为 PLL 输入时钟
     1 : HSE/PREDIV  作为 PLL 输入时钟 ( 参考 7.4.12 章节的时钟配置寄存器 2)
位 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 分频
位 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 倍频
第16位是0  : HIS/2  作为 PLL 输入时钟 这是什么鬼,我明明要用的是外部时钟结果你现在变成了内部时钟了

回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-4-29 14:17:43 | 显示全部楼层
到了这里,我看不下去了,先休息三天在看
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-5-2 07:33:49 | 显示全部楼层
三天了,继续,其实后来仔细看了看,这一句话的前提是把需要写的数据位先清零,然后根据宏定义来配置相应的数据位,就好像写flash一样,先擦除再往里写,不管以前里面是什么,都清除了,再写就按照配置的写进去就好了
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-5-2 07:34:59 | 显示全部楼层
回复一下,三天继续看
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-5-2 22:41:10 | 显示全部楼层
系统时钟现在已经看清楚了,也了解的差不多了,时钟树的话应该没有问题了,总结一下我的理解,首先是看参考手册里的时钟树介绍,然后根据启动代码去配置时钟树,每一行代码都要去分析,如果哪个寄存器不知道是什么意思了,就打开寄存器的手册去查阅相关的信息,然后就知道怎么配置系统时钟了
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-5-2 22:42:23 | 显示全部楼层
系统时钟配置完成后接下来该用到系统时钟了,我现在要配置的是定时器3的通道1 为比较输出翻转模式,参考的是硬石的例程
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-5-2 22:56:03 | 显示全部楼层
现在开始第一步配置,配置的是硬件,也就是定时器3的通道1 对应的管脚是PA6,没有重映射所以直接配置就成,配置成复用模式
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);时钟肯定要开启的
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;  选择的是 GPIO_Pin_6这个引脚
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
模式的话GPIO_Mode/*!< Specifies the operating mode for the selected pins.
                                       This parameter can be a value of @Ref GPIOMode_TypeDef   */
typedef enum
{
  GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode       输入模式  普通的模式       */      
  GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode   输出模式   普通的模式       */
  GPIO_Mode_AF   = 0x02, /*!< GPIO Alternate function Mode 复用模式应该是这么理解吧*/
  GPIO_Mode_AN   = 0x03  /*!< GPIO Analog In/Out Mode  这一个肯定是模拟相关的输入或输出模式    */
}GPIOMode_TypeDef;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//这个OType 这个是类型
typedef enum
{
  GPIO_OType_PP = 0x00,
  GPIO_OType_OD = 0x01
}GPIOOType_TypeDef;
GPIO_OType_PP(推挽),GPIO_OType_OD(开漏)

  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
typedef enum
{
  GPIO_PuPd_NOPULL = 0x00,
  GPIO_PuPd_UP     = 0x01,
  GPIO_PuPd_DOWN   = 0x02
}GPIOPuPd_TypeDef;
GPIO_PuPd_NOPULL(无),GPIO_PuPd_UP(上拉),GPIO_PuPd_DOWN(下拉)
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 速度
  GPIO_Init(GPIOA, &GPIO_InitStructure); 配置以上的参数
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-5-2 23:39:54 | 显示全部楼层
继续,我刚知道原来每个功能怎么配置在相应的文件里都有比如我要配置的输出比较功能
===============================================================================
                ##### Output Compare management functions #####
===============================================================================
        *** TIM Driver: how to use it in Output Compare Mode ***
===============================================================================
    [..] To use the Timer in Output Compare mode, the following steps are mandatory:
         (#) Enable TIM clock using
             RCC_APBxPeriphClockCmd(RCC_APBxPeriph_TIMx, ENABLE) function.
         (#) Configure the TIM pins by configuring the corresponding GPIO pins
         (#) Configure the Time base unit as described in the first part of this
             driver, if needed, else the Timer will run with the default
             configuration:
             (++) Autoreload value = 0xFFFF.
             (++) Prescaler value = 0x0000.
             (++) Counter mode = Up counting.
             (++) Clock Division = TIM_CKD_DIV1.
         (#) Fill the TIM_OCInitStruct with the desired parameters including:
             (++) The TIM Output Compare mode: TIM_OCMode.
             (++) TIM Output State: TIM_OutputState.
             (++) TIM Pulse value: TIM_Pulse.
             (++) TIM Output Compare Polarity : TIM_OCPolarity.
         (#) Call TIM_OCxInit(TIMx, &TIM_OCInitStruct) to configure the desired
             channel with the corresponding configuration.
         (#) Call the TIM_Cmd(ENABLE) function to enable the TIM counter.
    [..]
        (@) All other functions can be used separately to modify, if needed,
          a specific feature of the Timer.
        (@) In case of PWM mode, this function is mandatory:
            TIM_OCxPreloadConfig(TIMx, TIM_OCPreload_ENABLE).
        (@) If the corresponding interrupt or DMA request are needed, the user should:
            (#@) Enable the NVIC (or the DMA) to use the TIM interrupts (or DMA requests).
            (#@) Enable the corresponding interrupt (or DMA request) using the function
                 TIM_ITConfig(TIMx, TIM_IT_CCx) (or TIM_DMA_Cmd(TIMx, TIM_DMA_CCx)).
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-5-3 00:00:32 | 显示全部楼层
还有一点就是配置引脚的时候一定要注意,stm32f0的库文件里有详细的介绍具体的如下

    ===========================================================================
                         ##### How to use this driver #####
    ===========================================================================
      [..]
      (#) Enable the GPIO AHB clock using RCC_AHBPeriphClockCmd()
      (#) Configure the GPIO pin(s) using GPIO_Init()
          Four possible configuration are available for each pin:
         (++) Input: Floating, Pull-up, Pull-down.
         (++) Output: Push-Pull (Pull-up, Pull-down or no Pull)
                      Open Drain (Pull-up, Pull-down or no Pull).
              In output mode, the speed is configurable: Low, Medium, Fast or High.
         (++) Alternate Function: Push-Pull (Pull-up, Pull-down or no Pull)
                                  Open Drain (Pull-up, Pull-down or no Pull).
         (++) Analog: required mode when a pin is to be used as ADC channel,
              DAC output or comparator input.
      (#) Peripherals alternate function:
         (++) For ADC, DAC and comparators, configure the desired pin in analog
              mode using GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AN
         (++) For other peripherals (TIM, USART...):
              (+++) Connect the pin to the desired peripherals' Alternate
                    Function (AF) using GPIO_PinAFConfig() function. For PortC,
                    PortD and PortF, no configuration is needed.
              (+++) Configure the desired pin in alternate function mode using
                    GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AF
              (+++) Select the type, pull-up/pull-down and output speed via
                    GPIO_PuPd, GPIO_OType and GPIO_Speed members
              (+++) Call GPIO_Init() function
      (#) To get the level of a pin configured in input mode use GPIO_ReadInputDataBit()
      (#) To set/reset the level of a pin configured in output mode use
          GPIO_SetBits()/GPIO_ResetBits()
      (#) During and just after reset, the alternate functions are not active and
          the GPIO pins are configured in input floating mode (except JTAG pins).
      (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as
          general-purpose (PC14 and PC15, respectively) when the LSE oscillator
          is off. The LSE has priority over the GPIO function.
      (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as general-purpose
          PD0 and PD1, respectively, when the HSE oscillator is off. The HSE has
          priority over the GPIO function.
    @endverbatim
  ******************************************************************************
  * @attention
  *
  * <h2><center>&copy; COPYRIGHT 2012 STMicroelectronics</center></h2>
  *
  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
  * You may not use this file except in compliance with the License.
  * You may obtain a copy of the License at:
  *
  *        http://www.st.com/software_license_agreement_liberty_v2
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  *
  ******************************************************************************
  */

尤其是这句话尤为关键  
(#) Peripherals alternate function:
         (++) For ADC, DAC and comparators, configure the desired pin in analog
              mode using GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AN
         (++) For other peripherals (TIM, USART...):
              (+++) Connect the pin to the desired peripherals' Alternate
                    Function (AF) using GPIO_PinAFConfig() function. For PortC,
                    PortD and PortF, no configuration is needed.
              (+++) Configure the desired pin in alternate function mode using
                    GPIO_InitStruct->GPIO_Mode = GPIO_Mode_AF
              (+++) Select the type, pull-up/pull-down and output speed via
                    GPIO_PuPd, GPIO_OType and GPIO_Speed members
              (+++) Call GPIO_Init() function
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-5-3 02:20:46 | 显示全部楼层
F1的复用功能不像F0那样,想用那个就配置那个,具有复用功能的IO口默认就只有一个复用功能,换句话来说就是,每个能复用的IO口上都具有默认的复用功能,没有F0那么多的选择,默认你就只能用这一个,只需要把IO口配置成复用模式然后开启相对应的外设时钟就可以了。但是从F0到F1变化了,但是到了F4又变回来了,奇怪的现象
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-5-3 17:51:43 | 显示全部楼层
好了,继续,今天实现了定时器中断控制步进电机的旋转,刚才测试的时候发现了一些奇怪的现象,比如我做16细分的时候,转速控制在200转每分钟,结果步进电机堵转了,一直嗡嗡响,好吧,细分太多了,电机反应不过来了吗还是什么其他问题呢?
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-5-4 11:45:53 | 显示全部楼层
本帖最后由 凌凌漆 于 2020-5-4 11:48 编辑

左神说了,不知道为什么的事情就不去考虑了,好了那继续吧,今天看了内部flash的视频还有库函数开发指南,发现了一个错误
页 0  0x0800 0000 - 0x0800 07FF  2 Kbytes
页 1  0x0800 0800 - 0x0800 0FFF  2 Kbytes
页 2  0x0800 1000 - 0x0801 17FF  2 Kbytes
页 3  0x0800 1800 - 0x0801 FFFF  2 Kbytes
大家看      页 2开始地址是1000 结束地址是117FF 这看就错了差太多了
页3开始地址是1800 结束地址是1 FFFF算一下这是差多少呢  不知道是参考手册的问题还是故意写错的问题


回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-5-4 11:49:22 | 显示全部楼层
然后又看了一下野火大神写的更离谱了
页 0  0x0800 0000 - 0x0800 07FF  2 Kbytes
页 1  0x0800 0800 - 0x0800 0FFF  2 Kbytes
页 2  0x0800 1000 - 0x0800 17FF  2 Kbytes
页 3  0x0800 1800 - 0x0800 FFFF  2 Kbytes
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-5-4 11:54:57 | 显示全部楼层
问题原因找到了,两位大神肯定是看的中文的手册,后来我又翻阅了英文原版的STM32F10xxx Flash programming manual (PM0075)手册发现人家是正确的
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-5-4 11:56:29 | 显示全部楼层
本帖最后由 凌凌漆 于 2020-5-4 12:02 编辑

0x0800 1000 - 0x0800 17FF  
0x0800 1800 - 0x0800 1FFF
这是英文原版的
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-5-6 20:58:53 | 显示全部楼层
继续学习,最近感觉学习STM32F030F4P6的片子真的好坑啊,大部分都是自己看的不仔细,手册里看到的定时器是1个高级定时器,4个通用定时器,没有基本定时器Basic ,下一页明明写的是定时器6是Basic 定时器,也就是基本定时器,结果我还去配置定时器6了,结果可想而知,根本没有定时器中断产生,我还以为是自己配置的问题,哎别提有多悲催了,白白忙了好几天调试这个定时器6 ,哎,我就说,怎么一个最简单的基本定时器我都配置不好了呢,好吧,我这里反思一下,STM32F030F4P6的定时器,高级定时器(TIMER1),4个通用定时器(TIMER3、TIMER14、TIMER16、TIMER17)
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
 楼主| 发表于 2020-5-6 21:05:08 | 显示全部楼层
还有就是最近学习了一下HAL库,相比于标准库,基本原理差不多,想要深入学习还是从寄存器看,看看每个位都是做什么的,我主要是学习了外国人对于函数的编写的一致性,感觉特别规范,从命名开始到后面的调用,调用了某一个参数后会去判断是不是需要调用的,真的是太仔细了,相比于自己写的函数,真的差太多了,而且指针上用的特别溜
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2021-8-13
在线时间
3 小时
发表于 2021-8-13 19:11:52 | 显示全部楼层
用外部时钟8M的   接口的话是OSC_OUT  OSC_IN
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2018-5-8
在线时间
6 小时
发表于 2021-8-31 16:52:08 | 显示全部楼层
xuexi~~~~~~~~
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2019-11-25
在线时间
49 小时
发表于 2021-11-18 15:39:11 | 显示全部楼层
11111111
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2020-4-9
在线时间
31 小时
发表于 2021-11-23 11:28:37 | 显示全部楼层
666666
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-12 22:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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