初试32位MCU,初试华大136好多问题不明白的,请教大家!!
本帖最后由 2083759 于 2019-10-13 14:56 编辑用的是Keil_ARM,问题1:C51中断的中断服务程序有中断号,ARM应该怎么写呢?
问题2:中断的寄存器应该怎么操作?比如中断优先级寄存器(SCS_IPR0),M0P_SCS_IPR0不行
问题3:M0P开头和SCB开头分别是什么意思,两者区别呢?
1.库函数方法,在interrupts_hc32l136.c以经帮定义好了中断函数。 也可以在启动文件中查看到中断号。
2.寄存器操作方法,看用户手册。
3.M0P是寄存器,SCB开头分别是系统配置地址。
初次学ARM不建议学这种MCU。选教程多的通用MCU最好。这种没有教程资源,资料极少,现有的资料都会问题很多。到时会影响你学习的动力!
本帖最后由 smartpower 于 2019-10-13 17:19 编辑
1. ARM 不需要写中断号,在startup_xxxx.s文件中已写义了每个中断服务函数的名称。 在相应的.c文件中加上.S定义的中断服务函数,并在其中写入自己的中断服务代码即可。
2. ARM 已定义了中断相关的多个函数,不用操作SCB开头的寄存器。
位于...\arm\CMSIS\Core\Include\core_cm0plus.h
多看看库文件中的各种示例。每种片内外设都有很多示例的。
smartpower 发表于 2019-10-13 17:22
多看看库文件中的各种示例。每种片内外设都有很多示例的。
你好,我想先不用库 smartpower 发表于 2019-10-13 17:07
1. ARM 不需要写中断号,在startup_xxxx.s文件中已写义了每个中断服务函数的名称。 在相应的.c文件 ...
你好,我这样设置就进不了中断,只有放在循环里才行,不知道哪里问题
//定时器设置
M0P_SYSCTRL->PERI_CLKEN_f.BASETIM=1;//开时钟
M0P_TIM0_MODE0->M0CR_f.MODE=0;//模式0
M0P_TIM0_MODE0->ARR=0x00; //重载值
M0P_TIM0_MODE0->CNT=0x00; //初值
M0P_TIM0_MODE0->ICLR_f.UIF=0; //清除中断标志
M0P_TIM0_MODE0->M0CR_f.UIE=1;//中断使能
M0P_TIM0_MODE0->M0CR_f.PRS=2;//时钟分频4
M0P_TIM0_MODE0->M0CR_f.MD=1;//32/16模式.16
M0P_TIM0_MODE0->M0CR_f.CTEN=1;//定时器使能
void TIM0_IRQHandler(void)
{
if(M0P_TIM0_MODE0->IFR_f.UIF==1)
{
M0P_TIM0_MODE0->ICLR_f.UIF=0; //清除中断标志
h++;
qian=h%10000/1000;
bai=h%1000/100;
shi=h%100/10;
ge=h%10;
LCD_Display(qian,bai,shi,ge);
}
}
如下,你只是打开了IP的中断使能,你还需要打开NVIC的中断使能。
打开NVIC的方法如下所示,这个是ARM的函数。
另:做ARM就是要学习使用库来开发功能,也可以通过库来学习直接操作寄存器的方法。
主要原因是,在器件的用户手册中,不会详细描述ARM内核相关的功能及寄存器。
所以建议通过器件手册与DEMO相结合的方式来学习ARM类MCU。
当然,也可以买本ARM的书来,把ARM内核学习清楚。但那就太累了,那可是大部头的书,如下,有608页。{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}
华大代理qq:57863859 华大一级代理:QQ 765812964 我司华大一级代理商,有专业FAE支持,有需要技术支持及询价的加Q489858603 我也是长知识了 没有配置过啊 现在ARM芯片开发基本上是使用库了 华大一级代理商,有专业FAE支持,有需要技术支持或询价的欢迎加Q8687774详聊
页:
[1]