STM32
文章平均质量分 54
Shriven_雯
这个作者很懒,什么都没留下…
展开
-
RISC和CISC比较
RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。比如对于乘法运算,在CISC架构的CPU上,您可能需要这样一条指令:MUL ADDRA, ADDRB就可以将ADDRA和ADDRB中的数相乘并将结果储存在ADDRA中。将ADDRA,转载 2017-09-06 09:26:29 · 1661 阅读 · 0 评论 -
STM32 端口复用&重映射(USART Remap)
下面跟大家说一下STM32单片机的端口重映射,这里是以USART1的重映射为例. STM32上有很多I/O口,也有很多的内置外设想I2C,ADC,ISP,USART等,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是STM32还有一特别之处就是:很多复用内置的外设的I/O引脚可以通过重映射功能,从不同的I/O管脚引出,即复用功能的原创 2018-01-25 12:22:21 · 1181 阅读 · 0 评论 -
STM32F2系列系统时钟默认配置
下图是STM32F2系列的时钟树结构图:1、内部高速时钟HSI、外部高速时钟HSE和PLL时钟PLLCLK时钟都接到了SW开关处,通过SW选择哪一路作为SYSCLK,SYSCLK经过AHB分频器进行分频得到HCLK,APB1和APB2是挂在总线AHB上的,通过APB1和APB2分频得出fpclk1和fpclk2。2、PLL输入时钟源主要是靠外部高速时钟和内部高速时钟作为时钟源,通过转载 2018-01-04 15:51:52 · 1677 阅读 · 0 评论 -
SystemInit()函数详解
1 基于STM32F103的SystemInit()函数详解1 使用的固件库是,STM32F10x_StdPeriph_Lib_V3.5.02 学习板CPU的具体型号为STM32F103VET63 软件开发环境为RVMDK3.904 未定义STM32F10X_CL,在system_stm32f10x.c(第0115行)中定义了SYSCLK_FREQ_72原创 2018-01-04 15:50:00 · 22112 阅读 · 3 评论 -
STM32F107(互联网型)外部晶振用25MHZ 而STM32F103却用8MHZ的原因及其时钟来源分析
首先说下一下stm32芯片的启动过程: 打开 startup_stm32f10x_xx.s 文件可以发现系统是先执行SystemInit函数再执行main主函数的再打开SystemInit函数:函数前面是对RCC相关寄存器的Reset 在函数倒数有个 SetSysClock() 它是对系统时钟的初始化 再打开SetSysClock() 函数:因为原创 2018-01-04 15:07:07 · 3233 阅读 · 0 评论 -
stm32f10x.h文件分析理解
stm32f10x.h 这个头文件是STM32开发最为重要的一个头文件,ST开发了这个库,方便大家开发,缩短开发周期。在 stm32f10x.h 中前面一开始就出现了:#ifndef __STM32F10x_H#define __STM32F10x_H#ifdef __cplusplus extern "C" {#endif extern "C" { 这个语句用转载 2018-01-04 14:41:45 · 21372 阅读 · 3 评论 -
Keil开发STM32更换MCU造成的编译不通过的解决办法
1.更换MCU型号(在Keil从STM32F103ZET6换成STM32F107RCT6) 时出现的编译错误: 这个问题是因为对应处理器内部资源少于启动文件中提及的内部资源,启动文件中某一部分寄存器地址在STM32F107RCT6中没有,才会编译出错。2.更换启动文件宏定义 由于STM32F103系列的不同型号MCU内部ROM和RAM不同,其地址区间也有些许差原创 2018-01-03 21:06:29 · 7056 阅读 · 1 评论 -
cannot open source input file "printf.h": No such file or directory
在keil中编译是提示main.c(1): error: #5: cannot open source input file "printf.h": No such file or directory解决方法:在上图Include Paths中添加"printf.h"的路径原创 2018-01-03 16:10:41 · 3103 阅读 · 2 评论 -
STM32 JNTRST JTDI JTDO引脚用做普通IO方法
问题:将STM32F103 PB4(JNTRST)引脚配置成推挽输出模式,并将该引脚设置为输出是高电平,用万用电表测量引脚电压为0.8V,即无法输出高电平解决:STM32默认启动时PB4、PB3、PA15三个引脚不是普通IO,而是JTAG的复用功能,分别为JNTRST、JTDI、JTDO。当我们试用SWD接口调试仿真时,这三个引脚可以用作普通IO。具体做法就是禁用原创 2017-11-28 10:41:47 · 3596 阅读 · 0 评论 -
Cortex-M3的特权级别
Cortex-M3支持两种操作模式,还支持两种特权级别;两种模式为handler模式和线程(thread)模式,这两种模式是为了区别正在执行代码的类型;handler模式为异常处理例程的代码;线程模式为普通应用程序的代码;两种特权级别包括特权级和用户级,两种特权级别是对存储器访问提供的一种 保护机制;在特权级下,程序可以访问所有范围的存储器(如果有MPU,还要 在MPU的禁地之外),并且能转载 2017-09-07 09:52:25 · 1400 阅读 · 0 评论 -
STM32调试支持
STM32F10xxx使用Cortex™-M3内核,该内核内含硬件调试模块,支持复杂的调试操作。硬件调试模块允许内核在取指(指令断点)或访问数据(数据断点)时停止。内核停止时,内核的内部状态和系统的外部状态都是可以查询的。完成查询后,内核和外设可以被复原,程序将继续执行。 SWJ调试端口(serial wire and JTAG)STM32F10xxx内核集成了串行/JTA转载 2017-09-06 14:07:26 · 1979 阅读 · 0 评论 -
STM32 TIM1 PWM 输出
STM32F103x包含最多两个高级定时器(TIM1和TIM8),每个高级定时器可同时产生多达7路PWM输出,以TIM1为例,有TIM1_CH1和TIM1_CH1N、TIM1_CH2和TIM1_CH2N、TIM1_CH3和TIM1_CH3N、TIM1_CH4。通道1其实有两个输出通道对应:TIM1_CH1与TIM1_CH1N,TIM1_CH1N称为TIM1_CH1的互补通道,输出与TIM1_CH1原创 2018-01-25 17:14:38 · 37240 阅读 · 11 评论