打印
[技术问答]

初试32位MCU,初试华大136好多问题不明白的,请教大家!!

[复制链接]
2464|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
2083759|  楼主 | 2019-10-13 14:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 2083759 于 2019-10-13 14:56 编辑

用的是Keil_ARM,问题1:C51中断的中断服务程序有中断号,ARM应该怎么写呢?
问题2:中断的寄存器应该怎么操作?比如中断优先级寄存器(SCS_IPR0),  M0P_SCS_IPR0不行
问题3:M0P开头和SCB开头分别是什么意思,两者区别呢?

使用特权

评论回复
沙发
yangzhen1001| | 2019-10-13 16:34 | 只看该作者
1.库函数方法,在interrupts_hc32l136.c以经帮定义好了中断函数。 也可以在启动文件中查看到中断号。
2.寄存器操作方法,看用户手册。
3.M0P是寄存器,SCB开头分别是系统配置地址。

初次学ARM不建议学这种MCU。选教程多的通用MCU最好。这种没有教程资源,资料极少,现有的资料都会问题很多。到时会影响你学习的动力!

使用特权

评论回复
板凳
smartpower| | 2019-10-13 17:07 | 只看该作者
本帖最后由 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 | 只看该作者
多看看库文件中的各种示例。每种片内外设都有很多示例的。




使用特权

评论回复
5
2083759|  楼主 | 2019-10-13 17:51 | 只看该作者
smartpower 发表于 2019-10-13 17:22
多看看库文件中的各种示例。每种片内外设都有很多示例的。

你好,我想先不用库

使用特权

评论回复
6
2083759|  楼主 | 2019-10-13 17:54 | 只看该作者
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);
       
}
}

使用特权

评论回复
7
smartpower| | 2019-10-13 19:36 | 只看该作者
如下,你只是打开了IP的中断使能,你还需要打开NVIC的中断使能。


打开NVIC的方法如下所示,这个是ARM的函数。


另:做ARM就是要学习使用库来开发功能,也可以通过库来学习直接操作寄存器的方法。


使用特权

评论回复
评论
2083759 2019-10-14 08:30 回复TA
感谢解答,可以了谢谢 
8
smartpower| | 2019-10-13 19:51 | 只看该作者
主要原因是,在器件的用户手册中,不会详细描述ARM内核相关的功能及寄存器。
所以建议通过器件手册与DEMO相结合的方式来学习ARM类MCU。
当然,也可以买本ARM的书来,把ARM内核学习清楚。但那就太累了,那可是大部头的书,如下,有608页。


使用特权

评论回复
9
MCU57863859| | 2019-10-14 09:07 | 只看该作者
华大代理qq:57863859

使用特权

评论回复
10
2355898179@q| | 2019-10-24 11:01 | 只看该作者
华大一级代理:QQ 765812964

使用特权

评论回复
11
华大半导体MCU| | 2019-10-25 10:01 | 只看该作者
我司华大一级代理商,有专业FAE支持,有需要技术支持及询价的加Q489858603

使用特权

评论回复
12
drer| | 2019-11-12 13:13 | 只看该作者
我也是长知识了

使用特权

评论回复
13
gwsan| | 2019-11-12 13:29 | 只看该作者
没有配置过啊

使用特权

评论回复
14
conjunction| | 2019-11-17 18:47 | 只看该作者
现在ARM芯片开发基本上是使用库了

使用特权

评论回复
15
kane1019| | 2019-11-21 13:59 | 只看该作者
华大一级代理商,有专业FAE支持,有需要技术支持或询价的欢迎加Q8687774详聊

使用特权

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

本版积分规则

18

主题

79

帖子

2

粉丝