STM32中如何使用PC14和PC15

发布者:Aq123456258最新更新时间:2015-04-14 来源: eechina关键字:STM32  PC14  PC15 手机看文章 扫描二维码
随时随地手机看文章
在STM32的数据手册的管脚分配图中可以看到:PC14与OSC32_IN公用一个引脚,PC15与OSC32_OUT公用一个引脚,它们的使用方法如下:
 
当LSE(低速外部时钟信号)开启时,这两个公用管脚的功能是OSC32_IN和OSC32_OUT。
当LSE(低速外部时钟信号)关闭时这两个公用管脚的功能是PC14和PC15。
 
备用区域控制寄存器(RCC_BDCR)的LSEON用于控制LSE的开启或关闭。关于这个寄存器的用法请参看《STM3210x技术参考手册》。
 
作为GPIO输出的配置过程:
 
(1).使能GPIOC时钟
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
 
(2).配置GPIOC
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
 
(3).然后写高写低
  GPIO_WriteBit(GPIOC, GPIO_Pin_14, Bit_SET);
  GPIO_WriteBit(GPIOC, GPIO_Pin_15, Bit_SET);
  GPIO_WriteBit(GPIOC, GPIO_Pin_14, Bit_RESET);
  GPIO_WriteBit(GPIOC, GPIO_Pin_15, Bit_RESET);
 
以上代码跑在两个板子上,一个是backup区域里的RCC_DBCR的LSEON为0,即LSE关闭,以上(3) 的操作从示波器上看到了电平相应变换;另外一个板子,backup区域里的RCC_DBCR的LSEON为1,即LSE打开,则以上(3)的操作从示波器上看到无效。
 
作为GPIO输入的配置过程:
 
只是把以上的(2)稍微改一下,(3)就不用了
 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
 
外部连接为:在PC14引脚焊了一个电阻,电阻另一端通过跳线在上拉到3.3V和下拉到地的两种情况下,读出GPIOC_IDR.14分别为"1"和"0"。
 
作为外部中断输入的配置过程:
 
1.时钟使能
// + osc32_in/out --> pc14/15
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC |RCC_APB2Periph_AFIO, ENABLE);
注意要使能AFIO的时钟哦
 
2.中断配置
  // + for EXTI on PC.14 at falling edge
  /* Configure one bit for preemption priority */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
 
  NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQChannel;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
 
3. GPIO配置同上
 
4. EXTI配置
// + for PC14 EXTI @ falling edge
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource14);
  EXTI_InitStructure.EXTI_Line = EXTI_Line14;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);
 
5. 中断处理ISR
void EXTI15_10_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line14) != RESET)
  {
    /* Clear the EXTI line 9 pending bit */
    EXTI_ClearITPendingBit(EXTI_Line14);
  }
}
 
在中断处设置断点,只要按下key,就进入中断,跑出中断,再按key,再次进入,屡试不爽,试验完成~~~
关键字:STM32  PC14  PC15 引用地址:STM32中如何使用PC14和PC15

上一篇:STM32中如何使用PC14和PC15
下一篇:基于ARM+FPGA架构的三维图形加速系统

推荐阅读最新更新时间:2024-03-16 13:58

STM32开发板入门教程 - 内部温度传感器
废话少说 先看看他的参数 1. STM32内部温度传感器与ADC的通道16相连,与ADC配合使用实现温度测量; 2. 测量范围 40~125℃,精度 1.5℃。 3. 温度传感器产生一个随温度线性变化的电压,转换范围在2V VDDA 3.6V之间。 转换公式如下图所示: 呵呵 其实 写代码的时候 公式直接简化就得啦 如果测量要求不怎么高的话 呵呵(其实高也高不了 呵呵) 我们都喜欢简单 简单明了 嘿嘿 简化的公式: vu16 Temperature= (1.42 - ADC_Value*3.3/4096)*1000/4.35 + 25; 呵呵 重
[单片机]
<font color='red'>STM32</font>开发板入门教程 - 内部温度传感器
STM32 USB 之从0开始移植笔记
-----------------------------------动机----------------------------------- 写在前面的话:最近逛淘宝无意间发现RC522居然只要10元左右就可以包邮买到,真是太便宜了,就忍不住买了个回来玩玩。到货移植到我的板子上OK 后突然发现我的USB口紧张了,一个用来给板子供电一个插jlink 一个插入usb转串口给RC522下命令。就想着将板子供电和RC522传输用一个USB接口来实现。这就是这次折腾USB的来由~-~ ----------------------------------开始折腾USB----------------------------- 首
[单片机]
<font color='red'>STM32</font> USB 之从0开始移植笔记
STM32中断式发送特点和RS485方向控制
STM32的数据发送有两个中断标志,一个是发送数据寄存器空标志,一个是发送完毕标志。两个标志都可以引起中断. 要以中断的方式发送一个数据包,流程是这样的: 1.设置RS485的方向为发送,使能发送寄存器空中断,使能完毕进入串口中断。 2.串口中断里读取串口状态,并填充一个数据到发送数据寄存器,硬件自动清除发送数据寄存器空标志,串口数据发送开始。 3.串口发送完一个数据,发送数据寄存器变空,再进入中断,继续填充下一个数据,直到最后一个数据填充完, 使能串口 发送完毕中断。 4.最后一个数据发送完毕,再次进入中断, 清除发送数据寄存器空标志,清除发送完毕中断标志,清除这两个中断标志 的使能位,设置RS485的方向为接收.
[单片机]
STM32之RTC使用
RTC使用说明 STM3f10x的RTC时能涉及到的寄存器有RCC,BKP和RTC这三个大类寄存器;其中RCC主要控制了实时时钟和备份区的电源使能和时钟使能;RTC模块和时钟配置系统的寄存器是在后备区域的(即BKP),通过BKP后备区域来存储RTC配置的数据可以让在系统复位或待机模式下唤醒后RTC里面配置的数据维持不变;为此备份区还得涉及一个寄存器PWR,电源管理寄存器,备份区的写保护位在PWR- CR的第八位。 由于整个RTC都是位于后备区,而且RTC的APB1总线和内核的APB1总线是独立的,所以在系统复位和唤醒时,RTC和BKP的那些时钟不用从新配置;他们只受Backup domain software reset这个位
[单片机]
<font color='red'>STM32</font>之RTC使用
基于STM32单片机的串口使用解析
STM32串口功能比较强大,但仅仅使用串口来说,是很简单的 我们要做的事 1.使能串口时钟 2.复位串口 3.设置串口波特率 4.设置数据长度,停止位 5.收发使能 6.串口使能 1 int main() 2 { 3 u8 buf; 4 sysclk_init(9); 5 6 RCC-》APB2ENR|=1《《14; //串口使能 7 8 RCC-》APB2RSTR|=1《《14; 9 RCC-》APB2RSTR&=~(1《《14);//复位串口,不复位会出错 10 USART1-》BRR=0x1D4C;//设置波特率 11 USART1-》CR1|=0x200c;//停止位在USART-》CR2中,默认为1位停止位 12 /
[单片机]
基于<font color='red'>STM32</font>单片机的串口使用解析
STM32设计的儿童老人GPS防丢定位手环
一、环境介绍 MCU:STM32F103C8T6 GSM模块:GA6--果云 开发软件:Keil5 二、GA6-GSM模块介绍与调试 说明: GA6-B模块供电必须5V,采用电脑USB供电可能不稳定(没有5V,只有4.8V左右),导致模块使用不稳定,发送AT指令没有反应,调试阶段,可将开发板的USB线连接充电宝或者手机充电插头取电。 2.1 GA6-B模块概述 GA6-B 模组: 1. GA6 尺寸 22.8mm x 16.8mm x 2.2 mm; 2. 正常工作温度:-30°C ~ +80°C, 3. 受限工作温度:-40°C ~ -30°C 及+80°C ~+85°C* 4. 工作电压 3.5V-4.2V; 5. 开
[单片机]
<font color='red'>STM32</font>设计的儿童老人GPS防丢定位手环
stm32接收中文字符,解析中文字符的方法与调试
测试过程: 1、在keil中写出一个字符,例如 袁 ,然后写一个测试程序: u8 *arr = 袁 ; while(*arr!=0) { printf( 0x%2x ,*arr++); } 可以看到打印出来一个结果:0xd4 0xac。 2、解析这种打印的原因: 新建一个txt文件,用ultraedit打开,然后查看其十六机制的格式(CTRL+H),可以看到其结果是一样的,然后再用记事本打开这个文件,另存为,可以看到其编码方式为ANSI。 3、反向编写程序 u8 arr ={0xd4,0xac}; printf( %s\r\n ,arr); 可以看到结果也是 袁 ,也即是说,对于设备的
[单片机]
采用STM32的心电采集系统电路设计
心血管类疾病已经成为威胁人类身体健康的重要疾病之一,而清晰有效的心电图为诊断这类疾病提供了依据,心电采集电路是心电采集仪的 关键部分,心电信号属于微弱信号,其频率范围在0.03~100 Hz之间,幅度在0~5 mV之间,同时心电信号还掺杂有大量的干扰信号,因此,设计良好的滤波电路和选择合适的控制器是得到有效心电信号的关键。基于此,本文设计了以STM32 为控制核心,AD620和OP07为模拟前端的心电采集仪,本设计简单实用,噪声干扰得到了有效抑制。 主控模块电路设计 主控模块的STM32F103VET单片机是控制器的核心,该单片机是ST意法半导体公司生产的32位高性能、低成本和低功耗的增强型单片机,其内核采用 ARM公司最
[单片机]
采用<font color='red'>STM32</font>的心电采集系统电路设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved