在管脚映射的时候一定要记得开启映射的时钟RCC_APB2Periph_AFIO
如下
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_PD01, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//全部释放
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);
GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE);
映射了PD0,PD1(外部时钟管脚,默认为时钟输入)。
STM32中关于PD0和PD1的映射有如下说明:
The pins number 2 and 3 in the VFQFPN36 package, and 5 and 6 in the LQFP48 and LQFP64 packages are configured as
OSC_IN/OSC_OUT after reset, however the functionality of PD0 and PD1 can be remapped by software on these pins. For the LQFP100 package, PD0 and PD1 are available by default, so there is no need for remapping. For more details, refer to the Alternate function I/O and debug configuration section in the STM32F10xxx reference manual.
The use of PD0 and PD1 in output mode is limited as they can only be used at 50 MHz in output mode.
切记:PD0和PD1使用输出模式的时候被限制在只能用50MHz使用,否则无法输出高低电平。实测验证过,,,,
GPIO_Remap_SWJ_Disable是将JTAG所有的管脚全映射为GPIO了。
至于部分映射TIM3和全映射TIM2,等其他的映射可查看寄存器AFIO_MAPR的说明。如下图
我的程序使用的是PB4输出定时器3 通道1的PWM,故此处为GPIO_PartialRemap_TIM3部分重映射。
又如下图,
#define GPIO_Remap_SWJ_NoJTRST ((uint32_t)0x00300100)
#define GPIO_Remap_SWJ_JTAGDisable ((uint32_t)0x00300200)
#define GPIO_Remap_SWJ_Disable ((uint32_t)0x00300400)
可以通过选择GPIO_Remap_SWJ_NoJTRST ,将PB4的IO功能使用,就是释放了NJTRST的功能。
当选择GPIO_Remap_SWJ_Disable,所有相关的调试口均释放成了IO口。此时通过Jlink的SW方式下载时,无法下载程序,
解决方法:
1.需要复位下载(可将复位管脚对地短路,在点击下载后,释放复位管脚即可下载程序,复位时,管脚为默认功能)
2.将BOOT0拉高使用串口下载。
注意:
(1)TIM2_CH1 和 TIM2_ETR 共用一个引脚,但不能同时使用(因此在此使用这样的标记: TIM2_CH1_ETR)
(2)当不使用主振荡器HSE时(系统运行于内部的8MHz阻容振荡器), PD0和PD1可以映像到OSC_IN和OSC_OUT引脚。此功能只能适用于36、 48和64引脚的封装(PD0和PD1出现在100脚和144脚的封装上,不必重映像)。
上一篇:STM32串口之空闲中断
下一篇:stm32_汇编(STR和LDR)
推荐阅读最新更新时间:2024-11-17 01:51
推荐帖子
- 【SensorTag】 USB Dongle 两种工作模式切换
- 本帖最后由tianshuihu于2014-3-1517:38编辑 上次介绍了USBDongle用于抓包时的情况,之前看到‘wateras1’的介绍,其还可以用作BTool\\BLEDeviceMonitor,刚好手边也有CCdebugger可以重新写其硬件,下面就来试一下吧准备工作硬件USBDongle和CCdebugger,还有一根连接接线烧写软件‘SmartRFFlashProgrammer’(
- tianshuihu 无线连接
- 为什么我买的ARM开发板WINCE显示内存是28M?实际因该是64M
- 我买了块飞凌2440的ARM开发板,配置应该是64M内存。但是开机启动后查看wince下内存大小却是显示28368KBRAM?请问这是什么原因,请高手回答一下为什么我买的ARM开发板WINCE显示内存是28M?实际因该是64MX86体系下程序都是要载入内存执行的,WinCE的核心类似于WIN98,所以默认也是这样的。但ARM体系和X86有很大的区别,ARM体系下的FLASHROM有一个XIP区,这个区的代码是直接在ROM上执行的,不需要复制到内存(实际上直接在XIP上执行速度更快)。而
- lishixin WindowsCE
- CCS6编译出现的问题总结及解决办法
- 错误1、error#7:unrecognizedtoken.....解决办法:打开CCS6软件,window—preferences—workspace—“Textfileencoding”将默认的CP1252编码改成other中的UTF-8或UC-ASCII,这种修改也可以解决拷贝进来的文件中注释乱码的现象。错误2、error#10234-D:unresolvedsymbolsremain解决办法:Properties-predefin
- Jacktang DSP 与 ARM 处理器
- 请教芯片上的标志是哪个公司的?
- 请教一下有见识的人看一下芯片上的标志是哪个公司的?像是国产的请教芯片上的标志是哪个公司的?我这边的FLASH也是这个标志同求产家我的是PLCC封装的想知道,帮顶。 http://www.greenliant.com/应该是这家没错带链接会吞,自己搜下吧greenliantNANDrive这个品牌是SST现在叫GLS系列是原美国SST超捷公司去年推出的新产品系型号为GLS29EE010-70-4C-PHESST去年被分割了,SST25系列被他们代理
- weibinhi 模拟电子
- 6410硬件编解码的一点疑问?
- 我主要想知道硬件编解码之前的数据是什么格式或者封装的?之后应该就是H.264,MPEG-4之类的吧。之前呢?通过以太网接口的以太网数据帧(应该包含视频流的)能直接通过硬件编解码进行播放吗?还有TV-in,进来的是什么数据?那个接口是接什么的?TV-OUT,出去的是什么数据?这个接口又是接什么的?好像6410提供的只是DEMO测试,有没有哪家的板子提供这方面的驱动源码呢?6410硬件编解码的一点疑问?友坚的板板有,可以在他们公司主页上得到技术支持的电话……还有TV-in,进来的是什么数
- wbzh 嵌入式系统
- usb复合设备遇到问题
- 要做一个HID和MSD的复合设备,stm32f103在发送完configdescriptor后出现问题。bushond如下:21.0CTL8006000100001200GETDESCRIPTOR1.1.021.0DI120100020000004083045057000201020301
- chuanshuo898 stm32/stm8
设计资源 培训 开发板 精华推荐
- MIC2026-2YM双通道配电开关典型应用
- LT8303IS5 30 至 80 Vin、3.3Vout 隔离反激式转换器的典型应用电路
- LTC3557/LTC3557-1 的典型应用 - 具有锂离子充电器和三个降压稳压器的 USB 电源管理器
- AD9259-50EBZ,用于评估 AD9259 四通道、14 位、50 MSPS 串行 LVDS ADC 的评估板
- LTM4615EV 演示板、低电压、双路 4A DC/DC 模块稳压器,具有 1.5A VLDO
- 使用 Analog Devices 的 AD7986BCPZ 的参考设计
- 使用 Nuvoton Technology Corporation 的 W83321G 的参考设计
- 仅使用两个模拟组件的灵活 PLC/DCS 模拟输出模块
- LTC2953,具有故障安全电压监视功能的按钮式开/关控制器
- LM431C 可编程并联稳压器的典型应用