STM32的PA.8引脚具有复用功能——时钟输出(MCO), 该功能能将STM32内部的时钟通过PA.8输出.
操作流程:
1)、设置PA.8为复用Push-Pull模式。
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
2)、选择输出时钟源。
时钟的选择由时钟配置寄存器(RCC_CFGR)中的MCO[2:0]位控制。
RCC_MCOConfig(RCC_MCO);
参数RCC_MCO为要输出的内部时钟:
RCC_MCO_NoClock --- 无时钟输出
RCC_MCO_SYSCLK --- 输出系统时钟(SysCLK)
RCC_MCO_HSI --- 输出内部高速8MHz的RC振荡器的时钟(HSI)
RCC_MCO_HSE --- 输出高速外部时钟信号(HSE)跟晶振有关
RCC_MCO_PLLCLK_Div2 --- 输出PLL倍频后的二分频时钟(PLLCLK/2)
关键字:stm32f103 RCC_MCOConfig函数
引用地址:
stm32f103 RCC_MCOConfig函数
推荐阅读最新更新时间:2024-11-12 17:40
STM32F103DMA功能实现
所谓的DMA指的是:直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。 两个DMA控制器有12个通道(DMA1有7个通道,DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。 简单的来说,DMA功能指的就是,不需要程序控制,单片机内部自己可以控制数据从一个地方到另一个地方的传输。下面直接通过代码来看DMA功能如何实现。 #include dma.h u16 DMA1_MEM_LEN; //保存DMA每次数据传送的长度
[单片机]
STM32F103VET与CPLD之间的通信
简介:stm32采用在线调试,将readdata添加到观察窗口,查看它的值,可以看到,当cpld开发板的复位键未按下时,readata=0x0058,当长按cpld复位键时readata=0x0018,按键弹起之后readata=0x0058。 1、先贴CPLD的VHDL编程: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity stm32_cpld is port( cpld_cs:in std_logic;--cpld片选信号,硬件连接:通过SN74LVC4245与STM32的FSMC总
[单片机]
STM32F103ZET6 启动模式
STM32三种启动模式: STM32三种启动模式对应的存储介质均是芯片内置的,它们是: 1)用户闪存 = 芯片内置的Flash。 2)SRAM = 芯片内置的RAM区,就是内存啦。 3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。 在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表: BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。 BOOT1=0 BOOT0=1 从系统存储器启动
[单片机]
STM32F103停机模式测试
环境: 主机:WIN7 开发环境:MDK4.72 MCU:STM32F101 源代码: //定义IO初始化结构体 GPIO_InitTypeDef GPIO_InitStructure; //设置zigbee模块进入低功耗模式 inf_zigbee_sleep(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD ,ENABLE); //管脚初始化 GPIO_I
[单片机]
STM32f103c8t6作USBCDC的尝试
闲着无聊就倒腾stm32,实验室资源太多也搞不完,前些天搞了一点dsp,fpga,发现这些芯片难免有点无聊,于是又回来搞stm32的东西。倒腾了一天,下午先是弄了个FreeRTOS的例程,看了一点资料,发现一下没那么好上手,于是下午上完课以后就开始折腾USB,一晚上,搞了个USB的CDC。 本来是想用USB做个模拟串口控制led灯的,后来搞了一下没成功,可能是因为USB进了中断,也就懒得深究,直接就放弃led了,就直接发送接收数据,拿串口助手调试。 也废话少说,直接贴代码 /* Includes --------------------------------------------------------------
[单片机]
stm32f103VET6和stm32f103c8t6有什么区别?
我来终结下这个问题。 这两款单片机我都用过,其中无际单片机特训营其中一款wifi报警主机项目就是用了stm32f103c8t6。 stm32f103VET6和stm32f103c8t6都是STMicroelectronics公司推出基于ARM Cortex-M3内核的单片机。 它们在硬件规格和性能上存在一些差异,下面我详细讲解下它们的差异之处: 1.封装形式 首先最明显的肯定是stm32f103VET6和stm32f103c8t6的封装引脚不同。 stm32f103VET6采用的是100引脚的LQFP封装,而stm32f103c8t6采用的是48引脚的LQFP封装,所以在PCB设计的时候需要考虑到它们引脚差异。 还有就是s
[单片机]
在IAR平台stm32f105工程移植到stm32f103
由于stm32f105与stm32f103属于一个系列,其移植时改动部分少。 1.切换芯片型号 2.stm32f10x.h文件中通过注释选择起动文件。 3.进行硬件调试时注意对调试工具进行设置。
[单片机]
STM32f103的电阻触摸屏的五点校正算法
由于电阻式触摸屏就是一种传感器,它利用压力感应进行控制,将矩形区域中触摸点(X,Y)的物理位置转换为代表 X坐标和 Y 坐标的电压。这里先引入两个概念,物理坐标和逻辑坐标。物理坐标指触摸屏上点的实际位置,通常以液晶上点的个数来度量。逻辑坐标指这点被触摸时A/D 转换后的坐标值。如图1,我们假定液晶最左下角为坐标轴原点A ,在液晶上任取一点B (十字线交叉中心),B 在X 方向距离A 10 个点,在Y 方向距离A20 个点,则这点的物理坐标为(10,20)。如果我们触摸这一点时得到的X 向A/D 转换值为100,Y 向A/D 转换值为200,则这点的逻辑坐标为(100,200)。 常用的电阻式触摸屏矫正方法有两点校准法和三点校准法
[单片机]