1.不要太相信stm32内部的IO上下拉,必要的话,在外部接上下拉电阻。
2.当把JTAG的IO口当成普通IO口来使用时,要先禁止JTAG。
即:要使用到PB3、PB4、PA13、PA14、PA15时,要先禁止JTAG。
在库函数中,调用一下函数:
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//关闭jtag,保留swd
在寄存器编程中,用:
//JTAG模式设置,用于设置JTAG的模式
//mode:jtag,swd模式设置;00,全使能;01,使能SWD;10,全关闭;
//#define JTAG_SWD_DISABLE 0X02
//#define SWD_ENABLE 0X01
//#define JTAG_SWD_ENABLE 0X00
void JTAG_Set(u8 mode)
{
u32 temp;
temp=mode;
temp<<=25;
RCC->APB2ENR|=1<<0; //开启辅助时钟
AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]
AFIO->MAPR|=temp; //设置JTAG模式
}
关键字:stm32 实际运用
引用地址:
stm32实际运用中遇到的问题
推荐阅读最新更新时间:2024-03-16 15:41
stm32的SPI初始化
1 void SPIx_Init(void) 2 { 3 RCC- APB2ENR|=1 2; //PORTA时钟使能 4 RCC- APB2ENR|=1 12; //SPI1时钟使能 5 6 //这里只针对SPI口初始化 7 GPIOA- CRL&=0X000FFFFF; 8 GPIOA- CRL|=0XBBB00000;//PA5.6.7复用推挽输出 9 //GPIOA- ODR|=0X7 5; //PA5.6.7上拉,应该不起作用,因为此模式 10 SPI1- CR1&=~(1 6);//关闭SPI来配置某些位 11 12 SPI1-
[单片机]
STM32的两个.bin文件如何合并?
在生产时就是两道工序 先写入IAP,再通过IAP写入用户程序。在生产时就是两道工序,且生产时可能不会通过IAR+JLINK向芯片写IAP,应该是通过专门的烧录器+适配器向芯片烧写程序。如果能合并为1个,一次性烧写最好了,节省一道工序。 你找个STM32,用J-Link写入IAP,用IAR写入用户程序。然后用J-Flash将STM32的Flash内容全部读出来,保存为Bin文件就可以了。 你手上是有JLink吗,用Segger上的JLink 驱动下的JFlash 如你确定需要使用文件合并的方式,你可以先算出IAP的长度,在用户程序中算好需要偏移的地址,用UltraEdit是Hex文件形式打开,copy后保存,再做hex到
[单片机]
STM32学习笔记(一)GPIO
GPIO的使用: 一共四组IO口16*3+3:ABCD 库函数 necessity: 1.RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE)使能时钟 2.系统初始化(GPIO_Init) IN: GPIO_InitStruct:模式,引脚,GPIO的最大输出速率, GPIOA(用于参照指示寄存器地址的指针) OUT: CRH/CRL GPIO_InitTypeDef *GPIO_InitStruct; GPIO_InitStruct- GPIO_Mode= GPIO_Mode_Out_PP; GPIO_InitStruct- GPIO_Pin=GPIO_Pin_15
[单片机]
STM32实例-步进电机的速度控制
项目需求 在制作一个使用全向轮的机器人底盘,对于全向轮,电机的精度是影响效果的重要因素。所以使用了步进电机,使用步进电机的优点是可以不使用编码器,开环控制即可达到高精度的效果。 调整占空比或者调整周期 众所周知,PWM有两个重要参数,周期与占空比。 步进电机的运动方式是,每收到一个脉冲,就旋转指定的角度。因此影响电机速度的唯一参数就是PWM的频率。以下附图两张来说明调整占空比与调整周期的区别。 周期固定,调整占空比 上图中有4个PWM,它们的周期是一样的,不同之处是拥有从80%至20%的占空比。可以看出,无论占空比为多少,在1s内,它们产生的高电平的数量是一样的,即无论占空比为多少,PWM的频率都一致。因此也就无法调整
[单片机]
STM32库函数详解----(外部中断/事件控制器 EXTI)
1.void EXTI_DeInit (void) 函数解释:将EXTI外设寄存器重置为默注释。RCC_APB2PeriphResetCmd参数中没有EXTI外设的的宏,该外设重置采取的是直接向寄存器赋默认值的操作。 例子:EXTI_DeInit ( ); 2.void EXTI_Init (EXTI_InitTypeDef*EXTI_InitStruct) 函数解释:根据EXTI_InitStruct结构体中所配置的参数来初始化外设EXTI寄存器。结构体中模式成员设置了被使能线路是事件请求还是中断请求。 例子:EXTI_Init (&EXTI_InitStruct); EXTI_Line: EXTI_
[单片机]
STM32PB2(BOOT1)使用注意
STM32 PB2(BOOT1)使用注意 由于STM32 PB2脚是复用引脚,而且该复用功能是用于启动选择,使用时就要小心了 ------------------------------------------------------------------------- BOOT1 BOOT0 启动模式 说明 X 0 用户闪存存储器 用户闪存存储器被选为启动区域 0 1 系统存储器 系统存储器被选为启动区域(进入ISP模式) 1 1 内嵌SRAM 内嵌SRAM被选为启动区域 ----------------------------
[单片机]
stm32 中bootloader、startup_stm32f10x_md.s的作用
一、启动文件的作用是: 1. 初始化堆栈指针 SP; 2. 初始化程序计数器指针 PC; 3. 设置堆、栈的大小; 4. 设置异常向量表的入口地址; 5. 配置外部 SRAM 作为数据存储器(这个由用户配置,一般的开发板可没 有外部 SRAM); 6. 设置 C 库的分支入口__main(最终用来调用 main 函数); 7. 在 3.5 版的启动文件还调用了在 system_stm32f10x.c 文件中的 SystemInit() 函数配置系统时钟,在旧版本的工程中要用户进入 main 函数自己调用 SystemInit() 函数。 二、关于启动文件的介绍,可以参考: 1、http://www.360doc.com/cont
[单片机]
全面掌握stm32的GPIO知识
1 初学者重要提示 本文主要是以stm32H7系列为主。 对于不使用的引脚,推荐设置为模拟模式,悬空即可。 GPIO的速度等级高的时候,最好使能IO补偿单元。 2 GPIO功能简介 STM32H7的GPIO特性如下: 输出状态:开漏/推挽 + 上拉/下拉电阻。 通过输出数据寄存器(GPIOx_ODR)或者外设(GPIO设置为复用模式时)输出数据。 GPIO速度等级设置。 输入状态:浮空,上拉/下拉,模拟。 通过输入数据寄存器(GPIOx_IDR)或者外设(GPIO设置为复用模式)输入数据。 通过寄存器GPIOx_BSRR实现对寄存器GPIOx_ODR的位操作。 通过配置寄存器GPIOx_LCKR的锁机制,实现冻结IO口配置。 每两
[单片机]