最近公司在进行一个项目,需要用到超声波测距的功能,于是在做好硬件电路,但在写控制程序时,却遇上了令我费解的事情. 当在单片机最小系统上调好输出频率40kHz,占空比50%的方波输出信号后,将程序烧至超声波应用电路中的主控中.实验时,却发现输出波形变成了频率40kHz,占空比小于1%的尖波输出信号.于是我怀疑自己的电路有问题,遂拿了市面上销售的超声波模块成品来学习一下,发现单片机端口的输出波形很正常,没有变形有情况.在网上搜索良久,一直不明白是怎么回事.当某天在阿莫论坛看到一位网友的一句话,提到G…
引脚与GPIO的关系 引脚(pin)是对芯片的外部物理接口的一个称呼,它是在不把这个物理接口投入到具体应用场合下的称呼.例如,我们可以说,某某芯片的P1.5引脚可以作为数字输出驱动外部数字设备,也可以作为串口接受引脚接受串口数据.那么P1.5就是一个引脚(pin),而作为数字输出,UART的RX就是这个引脚的2个功能.所以我们可以发现:1.大多数MCU的引脚都不止一个功能.不同引脚内部结构不一样,拥有的功能也不一样.通过不同的配置,切换引脚的实际功能.2.不是所有的引脚都能在程序中使用,比如芯片…
端口位设置/复位寄存器BSRR: 注:如果同时设置了BSy和BRy的对应位,BSy位起作用. 位31:16  BRy: 清除端口x的位y (y = 0…15)      这些位只能写入并只能以字(16位)的形式操作.      0:对对应的ODRy位不产生影响      1:清除对应的ODRy位为0 位15:0 BSy: 设置端口x的位y (y = 0…15)      这些位只能写入并只能以字(16位)的形式操作.     0:对对应的ODRy位不产生影响     1:设置对应的ODRy位为1…
nRF52832 是支持NFC的,真可惜本码农没用过. NFC的引脚为 P0.09/P0.10,这两个引脚正常情况下是不能直接当做GPIO来用的,要用的时候,需要在编译环境配置一个宏. 下面是Keil-MDK 的配置,在全局增加一个 CONFIG_NFCT_PINS_AS_GPIOS 这样的宏,就可以了. 祝大家顺利.…
#ifndef __SYS_H #define __SYS_H #include "stm32f10x.h" //位带操作 //把“位带地址+位序号”转换别名地址宏 #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) //把该地址转换成一个指针 #define MEM_ADDR(addr) *((volatil…
硬件图上的上拉下拉: 没有触发时默认接到IO的是高电平就是上拉: 没有触发时默认接到IO的是低电平就是 下拉: (2)对应GPIO的配置 配置与你的外围电路息息相关: 比如下图: 你只能配置为上拉: A低电平--三极管截止--输入高电平: A高电平--三极管导通--输入低电平: 你不配置上拉就会导致: A低电平--三极管截止--输入低电平: A高电平--三极管导通--输入低电平:…
主函数开始后的处理流程: 1.外设初始化:HAL_Init() 2.系统时钟配置 RCC振荡器初始化:HAL_RCC_OsConfig() RCC时钟初始化:HAL_RCC_ClockConfig() 系统滴答定时器初始化:HAL_SYSTICK_Config() 3.按键GPIO初始化 GPIO端口时钟使能:__HAL_RCC_GPIOA_CLK_ENABLE() 工作模式 激活下拉或上拉 引脚初始化:HAL_GPIO_Init() 4.串口初始化 串口GPIO端口使能:__HAL_RCC_G…
如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理: 1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空.2)对于少于100脚的产品,有2种接法:  2.1)OSC_IN和OSC_OUT分别通过10K电阻接地.此方法可提高EMC性能.  2.2)分别重映射OSC_IN和OSC_OUT至PD0和PD1,再配置PD0和PD1为推挽输出并输出'0'.此方法可以减小功耗并(相对上面2.1)节省2个外部电阻. 以下是在ST英文网站FAQ上抄下的详细解释: 1) In 100…
Arduino微控制器的数字端口和模拟端口与ATMEGA 328芯片引脚的对应关系图如下.标有0~13标号的引脚对应的是数字端口,在0~13前面有符号“~”的引脚对应的端口具有PWM输出功能.标有A0~A5标号的是模拟端口. Arduino微控制器的数字端口和模拟端口与ATMEGA 328芯片引脚的对应关系图如下.标有0~13标号的引脚对应的是数字端口,在0~13前面有符号“~”的引脚对应的端口具有PWM输出功能.标有A0~A5标号的是模拟端口.…
STM32的功能引脚重映射和复用功能STM32中有很多内置外设的输入输出引脚都具有重映射(remap)的功能,本文对一些在使用引脚重映射时所遇到的有关问题加以说明.我们知道每个内置外设都有若干个输入输出引脚,一般这些引脚的输出脚位都是固定不变的,为了让设计工程师可以更好地安排引脚的走向和功能,在 STM32中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默认的脚位外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的脚位.下面是STM32F103xC中有关USART3引脚的摘要…