在配置STM32外设的时候,任何都要先使能该外设的时钟!PB2ENR 是 APB2总线上的外设时钟使能寄存器
我们要使能的PORTA和PORTD的时钟使能位,分别在的时钟使能位,分别在bit2和bit5,只要将这两位置1就可以使能PORTA和PORTD了
STM32的每个IO端口都有7个寄存器来控制。
他们分别是:配置模式的2个32位的端口配置寄存器 CRL 和 CRH;2个32位的数据寄存器IDR 和 ODR ;1个32位的置
复位寄存器 BSRR ;一个 16 位的复寄存器 位的复寄存器 BRR ;1个 32 位的 锁存 寄存器 LCKR ;
这里我们仅介绍常用 的 几个寄存器,我们常用的 IO 端口寄存器只有 4个: CRL 、CRH、IDR 、ODR。
每组IO口一共有16个,CRH控制着高8个IO口,CR控制着高低8个IO口;
具体配置模式如下:
这里我们可以记住几个常用的配置,比如 0X0表示模拟输入模式( ADC 用)、 0X3 表示推挽输出模式(做输出口用, 50M 速率)、 0X8 表示上 /下拉输入模式(做输入口用)、 0XB表示复用输出(使IO 口的第二功能, 50M 速率)。
IDR 是一个端口输入数据寄存器,只用了低 16 位。该寄存器为只读,并且能以 16 位的形式读出。
要想知道某个IO口的状态,你只要读这个寄存器,再看某位的状态就可以了。
ODR 是一个端口输出数据寄存器,只用了低 16 位。该寄存器为可读写,并且能以 16 位的形式读写。
要想控制某个IO口的输出状态。而向该寄存器写数据,则可以控制某个IO口的输出电平
//PC11输出高
关键字:STM32 GPIO口控制
引用地址:
STM32 学习笔记——GPIO口控制
推荐阅读最新更新时间:2024-03-16 16:13
【STM32】串口通信出现乱码(使用官方标准库)
开发板:stm32f407VET6 开发环境:keil5 MDK 为了使文章的内容完整,增加了一下原因的叙述,没有兴趣的话可以直接跳转到 问题解决 问题产生 最近学习了一下32的串口通信,串口配置还是很简单的,不过后面串口调试助手上面出现的乱码。很让人头疼。 当然第一时间去百度寻求解决办法。 百度搜索总结: 在程序不出现问题的情况下,一定是外部晶振设置的问题。但是也要排查下面
[单片机]
关于STM32的printf()函数重映射
printf()函数的重映射: 在配置的target选项中选择use microlib,然后在main()函数之前添加函数重映射,如下: int fputc(int ch, FILE *f) { USART_SendData(USART1, (u8) ch); while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); return ch; } 在main()函数中包含stdio.h头文件,在其他自己创建的函数中若使用printf()函数也应该包含改头文件,这样一来,prinft()函数重映射的使用便不会有警告以及错误。 若不是用微库,则应该在重映射printf()之前添
[单片机]
STM32 TImer几种模式_通用定时器
输入捕获模式 库函数例程位置: STM32F10x_StdPeriph_Lib_V3.3.0\Project\STM32F10x_StdPeriph_Examples\TIM\InputCapture 在输入捕获模式下,当检测到ICx信号上相应的边沿后,计数器的当前值被锁存到捕获/比较寄存器(TIMx_CCRx)中。当捕获事件发生时,相应的CCxIF标志(TIMx_SR寄存器)被置 1 ,如果使能了中断或者DMA操作,则将产生中断或者DMA操作。 在捕获模式下,捕获发生在影子寄存器上,然后再复制到预装载寄存器中。 PWM输入模式 库函数例程位置 :STM32F10x_StdPeriph_Lib_V3.3.0\Project\
[单片机]
STM32学习笔记之待机唤醒
翻开STM32的中文参考手册,里面关于STM32的低功耗模式有详细的标注. 1、睡眠模式(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行) 2、停止模式(所有的时钟都已停止) 3、待机模式(这是本文具体介绍的一种模式,也是功耗最低的模式) 在本博客中,就利用WKUP引脚的上升沿来唤醒MCU、所以我们就具体来介绍待机唤醒的实现方法: 那我们要怎么来进入待机模式、、又要怎么唤醒呢? 接下来一一介绍这三个步骤如下下: 1、 Cotex_M3系统控制寄存器中的SLEEPDEEP位: 2、电源控
[单片机]
STM32单片机的酒精浓度探测仪设计
引言 酒后驾车是导致交通事故的一个重要原因,给人们的生活和生命安全带来巨大的危害。为了防止机动车辆驾驶人员酒后驾车,现场实时对人体呼气中酒精含量的检查已日益受到重视。本系统针对现有酒精传感器恢复时间较长的问题,通过计算斜率成功地实现了快速酒精浓度检测,缩短了检测间隔时间,大大提升了酒精检测的效率。 1 酒精浓度探测仪的整体结构 酒精浓度探测仪由单片机、酒精传感器、信号调理电路、语音报警模块、TFTLCD显示模块、通信模块、功放模块等部分组成,结构框图如图1所示。由于语音报警模块和TFTLCD显示模块对于单片机的处理速度和处理数据量要求高,再加上酒精检测反应速度较快,实时性较高,因此采用了ST公司的STM32系列的单片机作
[单片机]
STM32双缓冲机制初始化(使用STM32CubeMX)
1.使用STM32CubeMX配置的串口引脚设置和dma的设置会生成在usart.c。 1)如果DMA接收想采用循环缓冲区的方式,可以直接将RX-DMA设置成Circle方式,然后数据就会硬件上自动实现环形缓冲区的功能,省了不少时间。 2)DMA在采用Normal模式的时候,当一次任务完成后,DMA- DMA_BufferSize自动清零,并且DMA自动停止。如果想再次设置DMA的BufferSize的话,必须要进行如下操作: step1:DMA_CMD(DMAx_Channely,DISABLE); step2: 设置DMA_BufferLen step3:DMA_CMD(DMAx_Channely
[单片机]
ubuntu下建立stm32开发环境:GCC安装以及工程Makefile建立
环境: ubuntu 13.10 stm32f103zet6 一 STM 32 GCC 安装 stm32 属于arm cortex-m系列thumb指令集,所以给arm用的arm-none-eabi就可以了,首先是下载 下载地址:https://launchpad .NET /gcc-arm-embedded/+download 下载其中的gcc-arm-none-eabi-version-linux.tar.bz2 解压到你知道的目录会产生 gcc-arm-none-eabi的文件夹 把该编译器添加到你的环境中:sudo gedit ~/.bashrc 在最后一行添加:因为我之前有添加过树莓派的编
[单片机]
STM32单片机半主机模式的应用
在keil中编程时常会遇到__use_no_semihosting_swi的警告,这时你就是进入了半主机模式。 在嵌入式的编程中你是避免不了使用printf、fopen、fclose等函数的但是因为嵌入式的程序中并没有对这些函数的底层实现,使得设备运行时会进入软件中断BAEB处,这时就需要__use_no_semihosting_swi这 个声明,使程序遇到这些文件操作函数时不停在此中断处,具体操作如下,将下列程序加入你的工程中: #pragmaimport(__use_no_semihosting_swi)#pragmaimport(_main_redirection)constchar__stdin_name[150]
[单片机]