打印
[STM32F1]

记录学习进度,请教几个中断容易搞混的问题

[复制链接]
532|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
奇立电源|  楼主 | 2015-11-13 20:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题一,这段代码用systick是否一样占CPU资原
void delay_us(u32 nus)
{
         u32 temp;
         SysTick->LOAD = 9*nus;
         SysTick->VAL=0X00;//清空计数器
         SysTick->CTRL=0X01;//使能定时器
         do
         {
          temp=SysTick->CTRL;//读取当前倒计数值
         }while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达
         
         SysTick->CTRL=0x00; //关闭计数器
         SysTick->VAL =0X00; //清空计数器
}
我的观点是只要有while();CPU就会空等,只是时间精确点而已

问题 2    中断函数只有名字规矩,不一定要放在stm32f10x_it.c 中,是否有响影响
我测试结果是可以放在其他ppp.c子函数里;

问题3;
int main()主函数文件开头一定要开#include "stm32f10x.h"吗?
还是设MDK设置包含路径后是否可以省这一句;
测试结果加不加都可以;
请大伙帮忙
沙发
airwill| | 2015-11-13 20:48 | 只看该作者
1. 只要有while();CPU就会空等, 完全正确, 所以应该尽量避免这样的空等.

2. 没有影响. 这个名字其实是在 Startxxx.asm 的启动文件里定义的, 你也可以使用别的名字的.

3. 这是个 STM32 mcu 寄存器的定义文件, 除非你的程序不涉及 STM32 的任何寄存器, 否则必须要 (当然很多时候, 就象你遇到大都情况, 不写也没问题, 因为已经被其它的驱动库文件包含了)

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
奇立电源 + 1 很给力!
板凳
皈依| | 2015-11-13 21:55 | 只看该作者
版主给力啊 讲解非常详细。我想回答的话都说了。。。
都不好意思回答了

使用特权

评论回复
地板
gejigeji521| | 2015-11-13 23:04 | 只看该作者
如果 想省点就别用While,或者while里配置个休眠模式,中断触发。需要工作就通过中断实现。

使用特权

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

本版积分规则

28

主题

100

帖子

7

粉丝