原创 STM32的一些细节

2015-10-21 16:33 1162 23 24 分类: MCU/ 嵌入式

这两天 碰到的奇葩问题是 STM32定时器同步的问题。我的设计本意是:使用定时器T3以100us的周期来定时发送命令给 FPGA。由于编码器出结果的最长时间为51us。因此,希望PWM中断要滞后于T3 约60us 。

 

调试过程:分别在T3和PWM中断中置IO1, IO2. 观察波形,发现IO1和IO2的周期都对,但相位差不固定,一直在变动。

百思不得其解。。。

 

后来,尝试用T2和T3来测试。发现相位是固定的,原来T2和T3的时钟来源是APB1 ,而T1的时钟来源是 APB2 。差异就在这里。

T8用的时钟是APB2.

改T3为T8, 相位差还是飘动。把T8由向上计数 也改成 和T1一样(中央对齐模式),这个时候相位差固定,但由之前的 55us 上升到78us 。估计和清中断标志有关。

 

关于中断优先级:

1.       中断优先级能分组,但只需要分一次确定下来即可,而不是分多次。若是分2组,则

抢占优先级可以有0—3 这4个级别。

 

函数:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

 

NVIC_IRQChannelPreemptionPriority 抢占优先级,越小优先级越高

NVIC_IRQChannelSubPriority       副优先级,越小优先级越高

 

2. 高抢占优先级能 打断 低抢占优先级。同一抢占优先级的中断不能相互打断。

还有一个比较坑爹的情况:在调试外部中断时,怎么也进不了中断。后来查明的原因是 PE6引脚对应的中断源 为 EXTI9_5 。

大量细节都隐藏在手册里。

文章评论1条评论)

登录后参与讨论

用户1849754 2016-5-23 08:40

这个好,谢谢
相关推荐阅读
用户376150 2016-04-01 14:03
回顾modelsim的使用
1. 首先,在新建工程里创建2个*.v文件,一个是被仿真代码,一个是测试代码。 2. 右键点击这2个文件的其中之一,选择“compile all” 3. 编译无误后,在菜单栏“view”中...
用户376150 2016-02-25 17:00
安装matlab2013b
      今天想装一下matlab2013b软件。过程写下来。   1.在百度贴吧找到一个下载链接,下载完后,看到有tamwoR13b.part01--part21共21个r...
用户376150 2016-02-24 14:40
simulink的命令集
simulink的命令集仿真命令sim           仿真运行一个simulink模块     sldebug       调试一个simulink模块     simset        设置...
用户376150 2016-01-18 17:00
SIMULINK
simulink 下的积分模块有很多选项可设定,特别是离散积分模块,工作模式有2种:intergration 和 accumulation 。前者的Ts为采样时间,而后者的Ts 固定为1,即累加的...
用户376150 2016-01-14 13:46
普通人缺什么
觉得过得很艰难?? 可能原因: 1.目标感不强 2.缺乏死磕精神  ...
用户376150 2016-01-12 13:47
对拖负载的原理图
此图为对拖的原理图:被拖负载电机发出3相交流电经过整流,大电容平波后变为直流。用PWM波的占空比控制负载电流的大小即可。图上有点小错误,PWM控制的是IGBT管,不是继电器。...
我要评论
1
23
关闭 站长推荐上一条 /2 下一条