精华内容
下载资源
问答
  • stm32入门

    2013-08-31 23:19:21
    stm32入门
  • STM32 入门

    2010-12-01 15:39:13
    STM32 入门
  • STM32入门

    2019-08-14 23:03:32
    stm32入门错误积累(关于构建工程模板) 关于assert_param 出现 :#223-D:function “assert_param” declared implicitly 在这里出现了大量的库文件里的错误。解决方式:在C/C++预定义中加入“USE_STDPERIPH_...

    stm32入门错误积累(关于构建工程模板)

    关于assert_param
    出现 :#223-D:function “assert_param” declared implicitly

    1. 在这里出现了大量的库文件里的错误。解决方式:在C/C++预定义中加入“USE_STDPERIPH_DRIVER”(这里我使用的是STM32f103)在C/C++预定义中加入“USE_STDPERIPH_DRIVER”就是允许“使用标准外设驱动”了。
      只有用预编译指令预定义了“USE_STDPERIPH_DRIVER”,才会将"stm32f10x_conf.h"包含进“stm32f10x.h”中,从而被"main.c"用到。"stm32f10x_conf.h"文件相当于一个开关文件,如果要用到STM32固件库驱动标准外设,则需要外设驱动头文件。所以 在C/C++预定义中加入“USE_STDPERIPH_DRIVER”就是允许“使用标准外设驱动”的意思。
    展开全文
  • STM32入门教程——芯达STM32入门系列教程
  • STM32入门 stm32深入浅出
  • stm32f103_芯达STM32入门系列教程

    热门讨论 2012-06-12 16:02:07
    芯达STM32入门系列教程之一《如何提高STM32的学习效率》 芯达STM32入门系列教程之二《如何安装J-Link驱动软件》 芯达STM32入门系列教程之三《如何使用J-Flash调试》 芯达STM32入门系列教程之四《如何使用STM32-ISP...
  • STM32入门简易教程

    2018-08-24 18:46:22
    STM32入门简易教程
  • 本文讲述了STM32入门学习经验总结,希望对你的学习有所帮助。
  • STM32入门必备 STM32学习笔记
  • 芯达STM32入门系列

    2013-01-07 17:22:10
    目录:芯达STM32入门系列教程之一《如何提高STM32的学习效率》 芯达STM32入门系列教程之二《如何安装J-Link驱动软件》 芯达STM32入门系列教程之三《如何使用J-Flash调试》 芯达STM32入门系列教程之四《如何...
  • STM32入门系列教程

    热门讨论 2012-04-21 04:24:55
    芯达STM32入门系列教程合集共十五章 芯达STM32入门系列教程之一《如何提高STM32的学习效率》 芯达STM32入门系列教程之二《如何安装J-Link驱动软件》 芯达STM32入门系列教程之三《如何使用J-Flash调试》 芯达STM32...
  • STM32入门与学习笔记 .
  • STM32入门首选

    2011-10-28 18:33:05
    STM32入门首选,作为刚刚起步接触stm32的肯定有些迷惑,这个文档可以作为你的老师,带领你走进stm32的世界
  • STM32入门教程

    2013-04-23 14:29:26
    芯达STM32入门系列教程 J-LINK J-FLASH STM32-ISP MDK 软件的使用调试 GPIO编程 USART串口编程 初试STM32中断 定时器和蜂鸣器 systick编程 实时时钟RTC编程 点亮LCD液晶屏 STM32的USB下载调试 如何使用SecureCRT串口...
  • STM32入门资料

    2012-02-10 21:03:39
    STM32入门资料对STM32有兴趣的可以下载来浏览
  • 下载_STM32入门基础.rar
  • STM32入门工具

    2011-12-10 15:53:29
    资料非常齐全,从事STM32入门者必备资料
  • 入门是一道鸿沟。这是专门针对stm32入门级的程序教程,着力解决stm32菜鸟入门时遇到的种种问题,帮助菜鸟建立原有认识水平与新知识的连接,帮助菜鸟跨越鸿沟。课程分6个项目,力求通俗易懂,做到理实一体。
  • STM32入门系列教程之一《如何提高STM32的学习效率》
  • 芯达STM32入门系列教程之一《如何提高STM32的学习效率》。
  • STM32入门(高级篇下).rar
  • STM32入门(高级篇上).rar
  • STM32入门(中级篇下).rar
  • stm32入门——PWM控制直流电机变速

    万次阅读 多人点赞 2018-11-26 19:42:05
    stm32入门——PWM输出控制直流电机变速 最近刚做了智能小车的寻迹实验,实验中用了定时器PWM输出来改变直流电机的转速,我在这里就大致总结一下PWM相关的知识。 什么是PWM? PWM(Pulse Width Modulation)脉冲宽度...

    stm32入门——PWM输出控制直流电机变速

    最近刚做了智能小车的寻迹实验,实验中用了定时器PWM输出来改变直流电机的转速,我在这里就大致总结一下PWM相关的知识。

    什么是PWM?
    PWM(Pulse Width Modulation)脉冲宽度调制。
    占空比:pwm占空比就是一个脉冲周期内有效电平在整个周期所占的比例。
    通过调节PWM的占空比就能调节IO口上电压的持续性变化,因此也能够控制外设的功率进行持续性变化,也就能控制直流电机的转速快慢。
    那么重点就在于如何调节PWM波形的输出。如下图所示

    图中的ARR是我们给定时器的一个预装载值,CCRx的上下变化是产生PWM波的关键。我们假设ARR大于CCRx的部分输出为高电平(即t1-t2、t3-t4、t5-t6),ARR小于CCRx的部分输出为低电平(即0-t1、t2-t3、t4-t5),则改变CCRx的值就能改变输出PWM的占空比。
    只要弄明白了上面那幅图,那就不难理解想要控制PWM的输出波形,重要的就是如何设置ARR与CCRx这两个寄存器的值了。

    PWM模式、有效电平
    前面我们假设ARR大于CCRx时输出为高电平,ARR小于CCRx时输出为低电平,但在实际运用中可能并非如此,有可能是相反的情况——ARR大于CCRx时输出为低电平,ARR小于CCRx时输出为高电平,至于到底是哪种情况,还要看PWM是哪种模式、有效电平又设置的是何种极性了。

    模式1:ARR小于CCRx时输出为“有效”电平,ARR大于CCRx时输出为“无效”电平。
    模式2:ARR小于CCRx时输出为“无效”电平,ARR大于CCRx时输出为“有效”电平。

    注意,我这里用的是“有效”和“无效”,而不是“高”和“低”,也就是说有效电平可高可低,并非一定就是高电平。PWM模式、效电平极性,需要程序员自己配置相关的寄存器来实现。
    以下面的代码来讲解
    TIM1_PWM_Init(899,0);//不分频。PWM频率=72000/(899+1)=80Khz
    我们使用定时器1的通道1来输出一路PWM波,想详细了解定时器参数的设置的朋友可以参考(stm32入门——定时器中断),我这里简单介绍一下,这里的899设置的就是ARR的值,至于那个0是用来设置TIM1的频率的,不分频就代表TIM1的时钟频率和系统时钟相同,这里假设为72MHz。

    void TIM1_PWM_Init(u16 arr,u16 psc)
    {		 					 
    	//此部分需手动修改IO口设置
    	RCC->APB2ENR|=1<<11; 	//TIM1时钟使能    
    	GPIOA->CRH&=0XFFFFFFF0;	//PA8清除之前的设置
    	GPIOA->CRH|=0X0000000B;	//复用功能输出 
    	
    	TIM1->ARR=arr;			//设定计数器自动重装值 
    	TIM1->PSC=psc;			//预分频器设置
      
    	TIM1->CCMR1|=7<<4;  	//CH1 PWM2模式		 
    	TIM1->CCMR1|=1<<3; 		//CH1预装载使能	 
     	TIM1->CCER|=0<<1;   	//OC1 输出使能	   
    	//TIM1->CCER|=1<<1;
    	
    	
    	TIM1->BDTR|=1<<15;   	//MOE 主输出使能	   
    
    	TIM1->CR1=0x0080;   	//ARPE使能 
    	TIM1->CR1|=0x01;    	//使能定时器1 										  
    }  
    

    前三行是用来配置GPIO口的,这里不解释。
    TIM1->ARR=arr; //设定计数器自动重装值
    TIM1->PSC=psc; //预分频器设置
    这两行就是我上门提到的设置定时器的频率和重装载值。

    TIM1->CCMR1|=7<<4; //CH1 PWM2模式
    TIM1->CCMR1|=1<<3; //CH1预装载使能
    TIM1->CCER|=0<<1; //OC1 输出使能
    这三行是用来设置PWM输出模式和设置通道的,通道是什么呢?简单地讲就是输出PWM波的GPIO口,代码一开始不是设置了PA8这个GPIO口嘛,这个PA8就是通道1。使用通道的话要先进行输入输出方向、通道使能的设置。

    //TIM1->CCER|=1<<1;
    这行我注释掉的代码,就是用来设置“有效电平”极性的,根据手册,当TIM1->CCER[1]这位置1时,有效电平为低电平,置0时有效电平为高电平,而默认情况下置0。

    TIM1->BDTR|=1<<15; //MOE 主输出使能
    这行代码只要对高级定时器进行设置,普通定时器无需设置。

    TIM1->CR1=0x0080; //ARPE使能
    这行代码是用来使能ARPE,ARPE是什么呢,就是当它被置1时,你自己设置的CCRx会立即生效,如果它被置为0,那么你自己设置的CCRx值不会立即生效(可能之前ARPE已经有值了),而是当之前设置的CCRx生效后才会使用你最新设置的CCRx值。

    上面的代码里没有对CCRx进行设置,这是因为CCRx常常是一个变化的值,你可以在主函数中用一个for循环+if判断语句对它进行++或–的操作,从而达到连续改变CCRx值得目的。例如

    for(i=0;i<300;i++){
    	TIM1->CCR1=i;
    	if(i==300){
    		i=0;
    	}
    }
    

    这里还要说的是PWM波的周期是由 定时器时钟频率 和 预装载值 两者决定的,预装载值就是ARR。我们来具体分析一下,预装载值PSC设置为899,那么,当定时器的当前值val从0增加到899时,一共经过了900个时钟周期,这900个时钟周期会产生一个PWM波形,也就是说900个定时器时钟周期才相当于一个PWM周期,那么PWM的频率就为72MHz/900=80KHz,周期为1/80KHz。


    有很多同学私信我很多的问题,也有要手册和源码的,CSDN下载要积分,我放公众hao了:游侠嵌入式。(计科卓越班的可以私我)

    展开全文
  • STM32入门学习笔记

    2020-04-28 11:02:38
    STM32入门学习笔记 本文为笔者入门学习过程的记录,只是零散的记录了一些个人不太懂得,觉得需要经常翻看的点 开发板:正点原子stm32F103-MINI 参考文档:【野火®】零死角玩转STM32—F103霸道_V2 【野火®】零死角...

    STM32入门学习笔记

    本文为笔者入门学习过程的记录,只是零散的记录了一些个人不太懂得,觉得需要经常翻看的点

    开发板:正点原子stm32F103-MINI
    参考文档:【野火®】零死角玩转STM32—F103霸道_V2
    【野火®】零死角玩转STM32—F103-MINI
    STM32F103RCT6
    STM32不完全手册_库函数版本_V3.1

    1、ST不同类型的开发板在这里插入图片描述

    2、stm32 HAL库开发软件,之前接触的是keil,看了些资料觉得cube+HAL库会成为主流,所以也记下来
    在这里插入图片描述
    3、STM32命名,常用的型号字母最好要记住
    STM32命名
    4、芯片数据手册中关于引脚功能的描述,对于接下来外设开发中引脚的选择有用,也会影响到代码的写法
    在这里插入图片描述
    5、参考手册和数据手册的内容区别,有目的的查看不同手册,提高效率
    在这里插入图片描述
    6、keil 的TAB 键支持块操作,就是可以让一片代码整体右移固定的几位,也可通过 SHIFT+TAB 键整体左移固定的几个位。
    & keil中查找替换的快捷键是“CTRL+H

    7、CMSIS内核文件集体亮相
    在这里插入图片描述

    8、建立工程模板,详细的步骤可以去零死角玩转STM32—F103-MINI手册看,里面每一步都有图片加解释,跟着建一次模板加深自己对工程结构的了解,以后开发就直接复制来用在这里插入图片描述
    9、库的帮助文档,在使用库函数时,可通过查阅此文件来了解标准库提供了哪些外设、函数原型或库函数的调用的方法,或者直接阅读源码里面的函数的函数说明
    在这里插入图片描述
    在这里插入图片描述
    10、使用库开发工程的过程中,要把位于 CMSIS 层的文件包含进工程( 除了特殊系统时钟需要改system_stm32f10x.c,其它文件丝毫不用修改,也不建议修改);开发主要针对用户层的几个文件,根据不同的应用对库文件进行增删(用条件编译#ifndef的方法增删)改动。
    在这里插入图片描述
    11、stm32f10x_conf.h文件中包含所有外设的头文件:stm32f10x_ppp.h,即用此头文件统一管理所有外设头文件,所以最终我们只需要包含stm32f10x.h 就行,并且可以把不要用的外设头文件包含都注释掉,只留下需要使用的,以加快编译速度,尤其工程比较大的时候
    在这里插入图片描述
    12、keil中新加硬件对应的.c/.h文件
    在hardware文件夹中新建对应的.c/.h文件 **——>**右键target,manage target,在对应模块下include .c文件(hardware) **——>**点击魔术棒,选择c/c++,在include path中加入对应的.h文件
    13、8种GPIOMode
    在这里插入图片描述
    写在最后:看了野火和正点原子的视频教程和开发手册,觉得火哥的更适合初学者,跟着一步一步来,对于我们的编程习惯的养成也有很好的帮助,而且野火的资料真的很多,都是开源的
    附上野火论坛的链接野火论坛
    在这里插入图片描述

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,420
精华内容 3,768
关键字:

stm32入门