打印
[STM32F1]

Stm32f10x学习笔记

[复制链接]
楼主: shskaoanc
手机看帖
扫描二维码
随时随地手机跟帖
21
shskaoanc|  楼主 | 2022-6-29 18:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
36、高级定时器时钟源挂在了APB2上,而通用定时器挂在APB1上。AHB(72mhz)→APB1分频器(默认2)→APB1时钟信号(36mhz)→倍频器(*2倍)→通用定时器时钟信号(72mhz)。如果APB1没有分频,那么通用定时器的时钟信号频率就直接等于APB1的时钟频率,没有上述的倍频器*2过程。TIM_SetAutoreload()用来改变PWM的频率,TIM_SetCompare1()用来改变占空比

使用特权

评论回复
22
shskaoanc|  楼主 | 2022-6-29 18:26 | 只看该作者
37、有刷电机一般启动力矩大一些,无刷电机启动力矩小,运行起来力矩大。有刷电机采用电刷机械电流换向,而无刷电机则通过霍尔传感器测出转子的电流来判断电机的运动位置和方向,返回给控制回路。

38、死区是必须要有的,因为这涉及到电路的短路问题。晶闸管在换向的时候需要死区时间来彻底关断线路

使用特权

评论回复
23
shskaoanc|  楼主 | 2022-6-29 18:27 | 只看该作者
39、刹车功能用来在控制回路出现问题时,硬件自动给予外部电机进行紧急刹车制动,反应在PWM上持续给出一个固定的占空比?(三相驱动也是?)

40、PWM输出最好采用PWM模式,其他的比较输出模式相位会慢慢改变,不精准

41、对FLASH的读写需要先解锁后加锁。FLASH写0容易,写1难。

使用特权

评论回复
24
shskaoanc|  楼主 | 2022-6-29 18:28 | 只看该作者
42、下载程序有两种方式,一种为ICP(在线编程),适用于JTAG或SWD协议下的烧写程序。另一种成为IAP(在应用编程),适用于很多接口(USB,串口,CAN)下载到存储器中,IAP允许在程序运行时重新烧写FLASH

43、FLASH分为主存储器(这里放置用户的程序代码)和信息块(启动代码),除此之外,还有一部分叫做系统存储器,这一块用户不可操作,为ST公司出产后固化,为系统的上电自举程序

使用特权

评论回复
25
shskaoanc|  楼主 | 2022-6-29 18:28 | 只看该作者
44、FLASH在写的时候,一定不能读,如果有读操作,那么将会锁住总线

45、对FLASH操作时,必须打开HIS

46、STM32有两种看门狗(IWDG独立看门狗《独立时钟》,WWDG窗口看门狗《由APB1分频而来》)

使用特权

评论回复
26
shskaoanc|  楼主 | 2022-6-29 18:29 | 只看该作者
47、SPI的的最高频率为36MHz(fpclk/2)

48、 TIM1和TIM8高级定时器在输出PWM时,需要配置一下主输出功能(CtrlPWMOutputs)才能输出PWM。其他的通用定时器不需要这样配置。但是TIM6和TIM7没有PWM输出功能。

使用特权

评论回复
27
shskaoanc|  楼主 | 2022-6-29 18:30 | 只看该作者
49、Code为程序代码部分

RO-data 表示程序定义的常量(如:const temp等);

RW-data 表示已初始化的全局变量

ZI-data 表示未初始化的全局变量,以及初始化为0的变量

Code, RO-data,RW-data..............flash

RW-data, ZIdata...................RAM

初始化时RW-data从flash拷贝到RAM

使用特权

评论回复
28
shskaoanc|  楼主 | 2022-6-29 18:30 | 只看该作者
50、STM32F103ZET6有144个引脚(Z为144),其中,可用IO口为112个(7X16=112,ABCDEFG口)

51、ARM公司只生产内核标准,不生产芯片。ST、TI这样的公司从ARM公司那里购买内核,然后外加自己的总线结构、外设、存储器、始终和复位、I/O后就组成了自己的

使用特权

评论回复
29
shskaoanc|  楼主 | 2022-6-29 18:33 | 只看该作者

使用特权

评论回复
30
z465151106| | 2022-6-30 13:42 | 只看该作者
楼主,问下中文版的资料是去哪里下载的?
我在ST官网上都是英文版的,搜索stm32f103c8t6中文文档,网页上也说中文文档,结果进去之后还是英文的。
谢谢。

使用特权

评论回复
31
dongnanxibei| | 2022-6-30 17:14 | 只看该作者

使用特权

评论回复
32
shskaoanc|  楼主 | 2022-6-30 21:26 | 只看该作者
52、CMSIS标准用于在向上的用户层和下面的硬件层交换信息。这个架构当然可以自己定义,但是这样的话就会没有标准。所以强制使用CMSISI标准来设计芯片。通俗点的讲就是系统初始化的函数名称CMSIS定义为SystemInit(),GPIO_ResetBits()等

53、端口复用和端口重映射是两个概念:前者在使能其对应的端口和对应的功能时钟即可。后者需要打开AFIO时钟,然后进行端口的重映射GPIO_PinRemapConfig()

使用特权

评论回复
33
shskaoanc|  楼主 | 2022-6-30 21:27 | 只看该作者
54、下载程序只能使用串口1,在硬件设计时一定要注意!

55、J-TAG调试频率一般设定为2MHz,而SWD调试频率可以设定为10MHz

56、SysTick的中断实现可以有两种方式:循环等待和中断法。推荐用循环等待,中断法可能会出问题而且占用资源。

使用特权

评论回复
34
shskaoanc|  楼主 | 2022-6-30 21:29 | 只看该作者
57、部分I/O引脚是5V兼容的。单个I/O的最大驱动电流和灌入电流均为25mA。整个芯片的电流为150mA

58、KEIL支持位段操作,可以利用C语言中的位段知识定义位段结构体,然后对单独的寄存器进行单独的位操作。

使用特权

评论回复
35
shskaoanc|  楼主 | 2022-6-30 21:30 | 只看该作者
59、关于内部上下拉电阻的设置:如果外部的按键另一头接地,那么需要设置成上拉电阻。(理由是当没有按下按键时,由于上拉,输入为高电平;按下时,由于外部接地,输入为低电平。)同理,如果外部的按键另一头接高电平,那么需要设置成下拉电阻。

使用特权

评论回复
36
shskaoanc|  楼主 | 2022-6-30 21:31 | 只看该作者
60、串口中断TXE和TC的区别:其实很明显,一个是发送寄存器空标志,一个是发送完成标志。因为串口在发送的时候首先需要把发送寄存器中的数据移位到移位寄存器(影子寄存器)后再串行发送出去。所以当发送寄存器DR空时说明现在可能正在往外面发送数据,数据可能还没有发送完。但是发送完成不一样,他是在移位寄存器将本次数据全部移位完成后设置的标志位(也就是发送完了停止位)。这么看来:TXE允许程序有更充裕的时间填写TDR寄存器,保证发送的数据流不间断。TC可以让程序知道发送结束的确切时间,有利于程序控制外部数据流的时序。

使用特权

评论回复
37
shskaoanc|  楼主 | 2022-6-30 21:31 | 只看该作者
61、窗口看门狗顾名思义有一个窗口,这个窗口的横坐标为时间,意思是在指定的时间范围内刷新寄存器,否则单片机复位。窗口的上限由人来设定W[6:0],下线定死为0x40Twwdg=(4096×2^WDGTB×(T[5:0]+1)) /Fpclk1;Twwdg为超时时间ms,Fpclk1为APB1时钟KHz,

使用特权

评论回复
38
shskaoanc|  楼主 | 2022-6-30 21:32 | 只看该作者
62、TIMx通用定时器有4个独立通道,分别可以用来作为:输入捕获、比较输出、PWM生成、单脉冲模式输出。

63、定时器的时钟来源有4个:内部时钟(CK_INT),外部时钟模式1(TIx),外部时钟模式2(ETR),内部触发模式(ITRx,这个用来定时器的同步)

使用特权

评论回复
39
shskaoanc|  楼主 | 2022-6-30 21:33 | 只看该作者
64、定时器中断溢出更新时间:Tout=((arr+1)*(psc+1))/Tclk,ARR为自动装载寄存器(1~65535)、PSC为分频系数,TCLK为输入时钟频率(Mhz)

65、PWM1和PWM2模式的区别仅在于相位的180度。前者高电平时,后者低电平。感觉好**肋,OCxREF极性就可以实现这个功能。。

使用特权

评论回复
40
shskaoanc|  楼主 | 2022-6-30 21:33 | 只看该作者
66、定时器输入捕捉有一个滤波器,顾名思义滤波器起到的就是滤波的作用,在捕捉外部信号时,信号可能不稳定,此时需要滤波:当检测到有外部输入时,需要再连续采样N次如果确定为高电平/低电平,则触发响应中断(如果开启了的话)。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则