历史上的今天
今天是:2025年03月11日(星期二)
2020年03月11日 | STM32开发笔记69: 外设启动的先后次序
2020-03-11 来源:eefocus
单片机型号:STM32F070F6P6
今天,在程序框架中增加了Timer16定时器驱动,但程序不能正常运行,本篇日志记录其原因。
驱动程序框架,定义了回调函数Timer16_InterruptFunction,写在main.cpp中用于逻辑层设计。Timer16_InterruptFunction调用的间隔为1ms,具体程序如下:
void Timer16_InterruptFunction(void)
{
Target.HAL.L2.Turn();
}
此程序完成以1ms为间隔L2闪烁的程序,但是将此程序烧写到目标板后,程序不能正常运行。经过调试,最后将问题锁定在启动顺序上,看一下程序外设的启动顺序,具体程序如下:
class CHAL
{
public:
CSystemInit SystemInit;
CSystemClock SystemClock;
CSystemTimer16 SystemTimer16;
CL1 L1;
CL2 L2;
CInfraredEmission InfraredEmission;
};
程序先启动的Timer16,后启动的L2,由于TImer16启动后,立刻发生中断,则会执行Timer16_InterruptFunction中的程序,而此时L2还未初始化,则造成错误发生。
知道以上原因后,解决方法很简单,调换一下启动顺序即可,程序如下:
class CHAL
{
public:
CSystemInit SystemInit;
CSystemClock SystemClock;
CL1 L1;
CL2 L2;
CSystemTimer16 SystemTimer16;
CInfraredEmission InfraredEmission;
};
此时,再运行程序,一切正常。
史海拾趣
|
本公司代理销售ST的STM32系列MCU 公司地址:广东深圳市福田区南园路70号上田大厦4D 公司官网:www.upsd8051.com 联系方式:MSN:lg_0755@hotmail.com,QQ:45293156; TEL:0755-83248843,E-Mail:hubin@u ...… 查看全部问答> |
|
本人对电子电路设计一点都不了解,选修不得已选了这门课,因为人文自然学科学分都修满 了,所以只能选工程科.这门课程就快结束了,过两天就要交作业,作业成绩作为这科期末成绩.前几 天下载了几个版本软件,都安装不了.实在没时间下载了,宿舍四个人一条 ...… 查看全部问答> |
|
我要用到两个个16位的ADC,对速度没有要求,但是要求保证精度。看了stm32的手册,上边讲是应用过采样技术将提高ADC的精度。感觉很不错,这样我就能省两个ADC的钱了,降低了不少成本。 我现在 ...… 查看全部问答> |
|
正交编码器,旋转编码器的一种(增量式编码器),用来确定机械行程的位移量与方向。通过监控脉冲数目和两个脉冲的相对相位,可以跟踪旋转的位置,旋转 和速度。比如电机转速。LM3S8962包含两个正交编码器接口,这对于电机驱动与监控足够,不过编码 ...… 查看全部问答> |
|
at tiny44a 简单的用下ad转化,可就是转换完成标志就是不置位 用的 atmel studio6.0 主频 8M 每次走到while 就停住了 /* * ADC.c * * Created: 2012/6/18 16:13:15 * Author: Administrator */ #include #include unsigned int Adc_Val; unsigned int sum; void ADC_In ...… 查看全部问答> |




