STM32学习之编写定时器3产生4路PWM

看了stm32定时器完爆51后,看了原子的定时器3产生一路PWM ,于是就想着写一个定时器3产生4路PWM的程序。搞了一个晚上,该了又改,MDK中仿真后,总是不出波形,以为自己代码有问题,最后用示波器一看,what!!有波形啊,坑啊,这软件有bug啊,一路PWM时,仿真还挺正常,换成4路后,就完蛋了,不出波形了。额,软件不可靠啊,下面看代码:

STM32学习之PWM程序编程总结

PWM:脉冲宽度调节。 参数: 1.频率:每秒信号重高电平到低电平回到高电平的次数。 2.占空比:搞电平持续的时间和一个完整的PWM信号周期持续的时间之比。 3.周期:一个完整PWM信号持续的时间。   步骤:   1.设置相应的时钟;通用定时器TIMX是由APB1这条总线提供时钟,而GPIO这些端口是由APB2这条总线提供时钟。注意: 如果需要对PWM的输出进行重映射的话,还需开启引脚复用时钟AFIO。 2设置相应的PWM输出引脚;对应的输出IO口应该设置为复用推挽输出GPIO_Mode_AF_PP,如果需要引脚重映射的话,则需要用GPIO_PINRemapConfig()函数进行设置。 3设置TIMx定时器的相关寄存器。 4设置PWM相关寄存器,首先设置PWM模式(默认情况下PWM是冻结的),然后设置占空比,再设置输出比较极性:当设置为High时,输出信号不反相,当设 置为Low时,输出信号反相后再输出。最重要的是要使能TiMX的输出状态和使能TIMX的PWM输出使能。相关设置完成后,就 可以通过TIMx_Cmd()来打开TIMx定时器,从而的到PWM输出了  

STM32定时器学习

STM32F103系列的单片机一共有11个定时器,其中2个高级定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统滴答定时器。前8个定时器可分为3组:TIM1和TIM8是高级定时器,TIM2-TIM5是通用定时器,TIM6和TIM7是基本定时器,这8个定时器都是16位的,他们的计数器的类型除了基本定时器TIM6和TIM7都支持向上,向下,向上/向下(中央对齐模式)这3种计数模式。 主要说说中央对齐模式:技术器从0开始向上计数,计数到自动重装载寄存器的值时,产生一个计数器溢出事件,然后再向下计数,计数到了1以后还会再产生一个溢出事件;然后再重0开始重新计数,如此反复。 定时器功能: 1.基本定时器:只有计数功能; 2.通用定时器,除了基本定时器的功能,还具有测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM). 3.高级寄存器除了具有以上两种寄存器的功能外,还具有控制直流电动机所有的功能。

stm32学习之串口中断的编程思路总结

1.使能UASRT模块,GPIO相应时钟。 2.配置相应的GPIO引脚。 3.配置一下USART的工作模式,比如波特率,数据位,有无奇偶校验位、有无硬件控制流、停止位等。 4配置一下USART的中断方式。 5.开启串口和使能串口。 6编写相应的串口中断函数。

STM32学习笔记之使用外部IO口引脚中断总结

STM32F103系列的单片机的每个IO口都可以作为外部中断源的输入。 使用外部IO口引脚中断的基本步骤: IO口初始化。 设置好相应的时钟。 设置相应的中断。 把相应的IO口设置为中断线路并初始化配置。 编写中断服务函数。 STM32单片机的中断和事件的区别:从外部激励信号来看,中断和事件的产生源都可以是一样的,之所以分为两部分,是由于中断需要CPU参与,需要软件的中断服务函数才能完成中断后产生相应的结果;但是事件不是,事件是靠脉冲发生器产生一个脉冲,进而由硬件自动完成这个事件并且产生相应的结果,当然相应的联动部件需要设置好,比如DMA操作,AD转换等;举例:比如使用传统的中断通道,需要外部I/O引脚触发AD转换,来测量物品的重量;如果使用传统的中断通道,需要外部I/O引脚触发产生外部中断,在外部中断服务程序启动AD转换,AD转换完成才能在相应的显示设备显示结果,这是用中断的方式。再看一下使用事件通道的工作原理:I/O引脚触发产生事件,然后脉冲发生器产生一个脉冲信号触发AD转换,AD转换完成后就可以将相应的结果显示出来;相比之下,后者不需要软件参与直接就可以触发AD转换,并且响应速度也要比中断方式快很多。 总结一下:可以这样简单的认为,事件机制提供了一个完全有硬件自动完成触发到产生结果的这么一个通道,不需要软件的参与,降低了CPU的负荷,节省了中断资源,提高了响应速度(硬件总快于软件),事件是利用硬件来提升CPU芯片处理事件能力的一个有效方法。

STM32库函数开发之步进电机驱动

步进电机是一种将电脉冲信号转换为角位移的执行机构。当收到一个脉冲信号,转过一定角,这个角度叫做步进角。可以控制脉冲的个数来控制总转过的角度,实现定位。