STM32的引脚可设置为可设置为:普通IO功能、复用功能、重映射功能。普通IO功能、复用功能用得比较多,这里就不叙述了。重映射功能,用的场合相对而言要少点。因为实在用定时器时在用到重映象,所以以F103的TIM3输出PWM波为例。
这是TIM3的复用功能映象表,可以看到没有重映象时TIM3的四个通道所对应的引脚为PA6、PA7、PB0、PB1;使用部分重映象时为PB4、PB5、PB0、PB1,因为只改变了部分引脚,所以叫部分重映象;使用完全重映象时为PC6、PC7、PC8、PC9,这全部的引脚都改了,所以叫完全重映象。
我这里要把TIM3_CH1、TIM3_CH1重映象到PC6、PC7。就要用到函数
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);
这个函数的参数GPIO_FullRemap_TIM3,是设置TIM3完全映射,当时没注意选了GPIO_PartialRemap_TIM3 ,结果调了半天没有波形输出。一定要注意。
具体配置过程如下:
void TIM3_PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定时器3的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE); //使能外设时钟使能
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE); //TIM选择全复用功能使能
关键字:STM32 重映像
引用地址:
STM32_(部分全部)重映像
推荐阅读最新更新时间:2024-03-16 15:41
stm32的gpio模拟iic小记
在用stm32的模拟iic读取mpu6050时发现读whoami寄存器为0xd1,而正确的值应该为0x68,导致这个问题基本上有以下几个原因: 1、如果是杜邦线连接,线太长且线质量不好会导致这个问题; 2、上拉电阻不合适,上拉电阻不合适的话会导致iic两根线上的波形不好; 3、gpio的输出模式不对,推挽输出可以改为浮空输出。 4、波形不好 解决办法: 更换短而质量好的线; 选择手册推荐的上拉电阻; gpio改为浮空输出,作为i2c的gpio必须为这种模式; 调整时序,是波形符合要求 我遇到的是情况1,换了两根线好了。
[单片机]
基于stm32单片机的可调节pwm输出
目标: 1.通过按键1切换pwm频率的切换。 2.通过按键2实现pwm占空比的切换。 3.备注:不附加硬件原理图,但是通过描述简单介绍引脚的连接。 硬件原理描述: 1.通过3个IO口实现16个按键的检测。 2.按键1,按键2不多做描述,通过键盘扫描程序循环检测按键 3.通过TIM2 CHI通道PA0输出波形。 pwm输出配置功能函数: #include pwm.h static u16 Tim_Prescaler=35; //配置TIM默认时钟分频 static u16 TIMCompare1=200; //配置TIM默认脉冲比较值 void GPIO_cfg() //配置pwm输出相关引
[单片机]
STM32在线调试正常,上电运行不正常
贴了两块样板,烧写同样的固件。其中一块工作正常,但是另外一块出现了很奇怪的现象:在线调试正常;每次烧写完后工作正常;重新上电有时候工作正常,有时候工作不正常;工作不正常时,按下复位按键,恢复正常。 工作异常现象:main函数中的系统运行指示灯不闪烁,但是初始化过程中点的一个灯是亮的!说明程序运行一段时间后,不工作了。 由于在线调试模式,板子工作正常,无法通过在线调试的方式判断程序运行的异常状态。 分析可能的原因: 1、初始化过程中,程序陷入死循环。但程序初始化过程中,没有while(1)死循环的代码。 2、板子上电后不断复位,导致无法进入main函数中的while(1)循环。 问题查找: 硬件: 1、确认BOOT0管脚接10k
[单片机]
初学stm32-寄存器开发点灯、流水灯、蜂鸣器
寄存器开发概述1 寄存器: 寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。 在计算机领域,寄存器是CPU内部的元件,包括通用寄存器、专用寄存器和控制寄存器。寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。 STM32内部的所有寄存器都有唯一的地址 寄存器地址 = 寄存器基地址+偏移地址(偏移量) stm32时钟源: LSI RC 32KHZ — 低速内部振荡时钟源 LSE OSC 32.768KHZ — 低速外部晶振时钟源 16MHZ HSI RC — 高速内部振荡时钟源 4-26MHZ HSE
[单片机]
stm32在调试过程中常见问题及解决办法
STM32调试过程中常见的问题及解决方法 一、 在“Debug选项卡”下设置好仿真器的类型后,下载程序时却提示“No ULINK Device found.” 解决办法: Keil MDK默认使用ULINK仿真器下载程序,在“Project --- Option for Target 'xxx' --- Utilities选项卡”下把编程所使用的仿真器改为相应的类型即可。 二、 编译工程时提示如下信息: main.axf: Error: L6218E: Undefined symbol __BASEPRICONFIG (referred from stm32f10x_nvic.o). main.axf: Error
[单片机]
ST推出新的简单易用的STM32设计工具
增加对混合信号微控制器和入门级微控制器的开发支持。 中国,2014年7月 11日 ——意法半导体新发布的STM32微控制器设计工具为STM32F3混合信号微控制器和STM32F0入门级微控制器应用开发人员带来STM32Cube™软件平台的高效率和STM32Nucleo开发板的便利性。 最新的STM32CubeF3和STM32CubeF0嵌入式软件为STM32 F3 和STM32 F0 器件开发人员提供免费且可直接可用的专用中间件软件栈,例如触感和USB软件库、STM32外设驱动软件库,以及简化STM32应用代码跨系移植的硬件抽象层(HAL,Hardware Abstraction Layer)。将该嵌入式软件配合最新版
[单片机]
STM32单片机的ADC多通道采样
一 单通道采样 参考资料: 《STM32库开发实战指南》 原理性质的东西还是少讲,因为上面那本书里面讲解的很详细了,直接来看硬件电路图 这里使用的是3362电位器(10K),即用STM32来测量PB0和GND两端的电压,这样的电路设计比较简单也容易理解,但是存在一定的弊端,下面给出《STM32库开发实战指南》上面配套的硬件电路图 如果设计电路图的话,可以参考这种思路。 我的收获 1 引脚初始化的时候需要注意 每一个ADC通道都对应一个GPIO引脚,看图中的ADC123_IN10,表示这个引脚(PC0)可以配置为ADC1的通道10,或者是ADC2的通道10,或者是ADC3的通道10,这个地方非常重要,涉及到后面ADC初
[单片机]
基于STM32中串口通信的实例分析
串口是串行接口(serial port)的简称,也称为串行通信接口或COM接口。串口通信是指采用串行通信协议(serial communication)在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式。串口按电气标准及协议来划分,包括RS-232-C、RS-422、RS485等。 在串行通信中,数据在1位宽的单条线路上进行传输,一个字节的数据要分为8次,由低位到高位按顺序一位一位的进行传送。串行通信的数据是逐位传输的,发送方发送的每一位都具有固定的时间间隔,这就要求接收方也要按照发送方同样的时间间隔来接收每一位。不仅如此,接收方还必须能够确定一个信息组的开始和结束。 常用的两种基本串行通信方式包括同步通信和异步通信
[单片机]