不知道怎么使能多个时钟

还是要多看书,在教材的p81页

STM32 外设时钟默认处在关闭状态,因此初始化 GPIO 后,还需要使能外设时钟,
GPIO 挂载在 APB2 总线上,需调用库函数 RCC_APB2PeriphClockCmd()。比如打开
GPIOA 时钟,方法如下:

//使能端口 A 的时钟
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA,ENABLE);


每次使能时钟的时候,会查看时钟树确定外设挂载的对应总线。在 stm32f0x_rcc.h
文件里面有如下的宏定义:


/** @defgroup APB2_peripheral 
  * @{
  */

#define RCC_APB2Periph_AFIO              ((uint32_t)0x00000001)
#define RCC_APB2Periph_GPIOA             ((uint32_t)0x00000004)
#define RCC_APB2Periph_GPIOB             ((uint32_t)0x00000008)
#define RCC_APB2Periph_GPIOC             ((uint32_t)0x00000010)
#define RCC_APB2Periph_GPIOD             ((uint32_t)0x00000020)
#define RCC_APB2Periph_GPIOE             ((uint32_t)0x00000040)
#define RCC_APB2Periph_GPIOF             ((uint32_t)0x00000080)
#define RCC_APB2Periph_GPIOG             ((uint32_t)0x00000100)
#define RCC_APB2Periph_ADC1              ((uint32_t)0x00000200)
#define RCC_APB2Periph_ADC2              ((uint32_t)0x00000400)
#define RCC_APB2Periph_TIM1              ((uint32_t)0x00000800)
#define RCC_APB2Periph_SPI1              ((uint32_t)0x00001000)
#define RCC_APB2Periph_TIM8              ((uint32_t)0x00002000)
#define RCC_APB2Periph_USART1            ((uint32_t)0x00004000)
#define RCC_APB2Periph_ADC3              ((uint32_t)0x00008000)
#define RCC_APB2Periph_TIM15             ((uint32_t)0x00010000)
#define RCC_APB2Periph_TIM16             ((uint32_t)0x00020000)
#define RCC_APB2Periph_TIM17             ((uint32_t)0x00040000)
#define RCC_APB2Periph_TIM9              ((uint32_t)0x00080000)
#define RCC_APB2Periph_TIM10             ((uint32_t)0x00100000)
#define RCC_APB2Periph_TIM11             ((uint32_t)0x00200000)

#define IS_RCC_APB2_PERIPH(PERIPH) ((((PERIPH) & 0xFFC00002) == 0x00) && ((PERIPH) != 0x00))
/**
  * @}
  */ 

/** @defgroup APB1_peripheral 
  * @{
  */

#define RCC_APB1Periph_TIM2              ((uint32_t)0x00000001)
#define RCC_APB1Periph_TIM3              ((uint32_t)0x00000002)
#define RCC_APB1Periph_TIM4              ((uint32_t)0x00000004)
#define RCC_APB1Periph_TIM5              ((uint32_t)0x00000008)
#define RCC_APB1Periph_TIM6              ((uint32_t)0x00000010)
#define RCC_APB1Periph_TIM7              ((uint32_t)0x00000020)
#define RCC_APB1Periph_TIM12             ((uint32_t)0x00000040)
#define RCC_APB1Periph_TIM13             ((uint32_t)0x00000080)
#define RCC_APB1Periph_TIM14             ((uint32_t)0x00000100)
#define RCC_APB1Periph_WWDG              ((uint32_t)0x00000800)
#define RCC_APB1Periph_SPI2              ((uint32_t)0x00004000)
#define RCC_APB1Periph_SPI3              ((uint32_t)0x00008000)
#define RCC_APB1Periph_USART2            ((uint32_t)0x00020000)
#define RCC_APB1Periph_USART3            ((uint32_t)0x00040000)
#define RCC_APB1Periph_UART4             ((uint32_t)0x00080000)
#define RCC_APB1Periph_UART5             ((uint32_t)0x00100000)
#define RCC_APB1Periph_I2C1              ((uint32_t)0x00200000)
#define RCC_APB1Periph_I2C2              ((uint32_t)0x00400000)
#define RCC_APB1Periph_USB               ((uint32_t)0x00800000)
#define RCC_APB1Periph_CAN1              ((uint32_t)0x02000000)
#define RCC_APB1Periph_CAN2              ((uint32_t)0x04000000)
#define RCC_APB1Periph_BKP               ((uint32_t)0x08000000)
#define RCC_APB1Periph_PWR               ((uint32_t)0x10000000)
#define RCC_APB1Periph_DAC               ((uint32_t)0x20000000)
#define RCC_APB1Periph_CEC               ((uint32_t)0x40000000)
 
#define IS_RCC_APB1_PERIPH(PERIPH) ((((PERIPH) & 0x81013600) == 0x00) && ((PERIPH) != 0x00))

/**
  * @}
  */

从定义的标识符名称可以看出,GPIOA~GPIOC 挂载在 APB2 下面,TIM2~TIM4
载在 APB1 下面,TIM1 TIM8 挂载在 APB2 下面。所以,在使能 GPIO 时要

调用 RCC_APB2PeriphClockCmd()函数,在使能 TIM2 时调用 void RCC_APB1PeriphClockCmd()函数。

 

在LabVIEW中,可以同时使用多个时钟来控制不同的任务和功能。LabVIEW中的时钟通常用于定时执行某些操作或生成精确的时间延迟。 有两种常见的方式可以使用多个时钟: 1. 使用单一的时钟并通过程序控制不同的时间间隔:可以使用一个主时钟,并根据需要定义多个不同的时间间隔。通过使用合适的计时器和条件语句,可以实现不同的时间间隔并在每个时间间隔执行相应的操作。这种方法适用于需要频繁切换任务的应用程序。但是,需要确保在程序中控制的时间间隔不会发生冲突。 2. 使用多个独立的时钟:LabVIEW提供了多个不同的时钟模块,可以单独使用并为每个任务使用独立的时钟。每个时钟都可以设置不同的时间间隔,并使用适当的事件结构或条件语句触发相应的操作。这种方法适用于需要同时执行多个不相关任务的应用程序。使用多个独立的时钟可以有效地控制不同任务之间的时间关系,并避免任务之间的冲突。 无论使用哪种方式,重要的是要合理安排和管理时钟。需要确保时钟的时间间隔足够精确,并避免不必要的冲突和重叠。可以使用LabVIEW的调试和测试工具来验证和优化时钟的性能,并确保应用程序正常运行。 综上所述,LabVIEW可以使用单一的时钟多个独立的时钟来实现多个时钟功能。具体的选择取决于应用程序的需求和任务的特定要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值