OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3722|回复: 16

M0芯片

[复制链接]

45

主题

104

帖子

0

精华

高级会员

Rank: 4

积分
573
金钱
573
注册时间
2016-6-16
在线时间
100 小时
发表于 2016-6-16 14:08:14 | 显示全部楼层 |阅读模式
1金钱
我以前学的是M3的芯片,现在想要接触M0的芯片,但是M0大部分程序都是用库函数写的,有没有哪位大神有好的方法让我快速入手M0啊?

最佳答案

查看完整内容[请看2#楼]

NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn; //选择那个中断 NVIC_InitStructure.NVIC_IRQChannelPriority=0; //中断抢占优先级,0-3,M0无等待优先级 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //这个不用说了吧 NVIC_Init(&NVIC_InitStructure); typedef enum IRQn { /****** Cortex-M0 Processor Exceptions Numbers ***** ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-6-16 14:08:15 | 显示全部楼层
        NVIC_InitTypeDef NVIC_InitStructure;

        NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;       //选择那个中断
        NVIC_InitStructure.NVIC_IRQChannelPriority=0;                //中断抢占优先级,0-3,M0无等待优先级
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;            //这个不用说了吧
        NVIC_Init(&NVIC_InitStructure);

typedef enum IRQn
{
/******  Cortex-M0 Processor Exceptions Numbers ******************************************************/
  NonMaskableInt_IRQn         = -14,    /*!< 2 Non Maskable Interrupt                                */
  HardFault_IRQn              = -13,    /*!< 3 Cortex-M0 Hard Fault Interrupt                        */
  SVC_IRQn                    = -5,     /*!< 11 Cortex-M0 SV Call Interrupt                          */
  PendSV_IRQn                 = -2,     /*!< 14 Cortex-M0 Pend SV Interrupt                          */
  SysTick_IRQn                = -1,     /*!< 15 Cortex-M0 System Tick Interrupt                      */

/******  STM32F-0 specific Interrupt Numbers *********************************************************/
  WWDG_IRQn                   = 0,      /*!< Window WatchDog Interrupt                               */
  PVD_IRQn                    = 1,      /*!< PVD through EXTI Line detect Interrupt                  */
  RTC_IRQn                    = 2,      /*!< RTC through EXTI Line Interrupt                         */
  FLASH_IRQn                  = 3,      /*!< FLASH Interrupt                                         */
  RCC_IRQn                    = 4,      /*!< RCC Interrupt                                           */
  EXTI0_1_IRQn                = 5,      /*!< EXTI Line 0 and 1 Interrupts                            */
  EXTI2_3_IRQn                = 6,      /*!< EXTI Line 2 and 3 Interrupts                            */
  EXTI4_15_IRQn               = 7,      /*!< EXTI Line 4 to 15 Interrupts                            */
  TS_IRQn                     = 8,      /*!< TS Interrupt                                            */
  DMA1_Channel1_IRQn          = 9,      /*!< DMA1 Channel 1 Interrupt                                */
  DMA1_Channel2_3_IRQn        = 10,     /*!< DMA1 Channel 2 and Channel 3 Interrupts                 */
  DMA1_Channel4_5_IRQn        = 11,     /*!< DMA1 Channel 4 and Channel 5 Interrupts                 */
  ADC1_COMP_IRQn              = 12,     /*!< ADC1, COMP1 and COMP2 Interrupts                        */
  TIM1_BRK_UP_TRG_COM_IRQn    = 13,     /*!< TIM1 Break, Update, Trigger and Commutation Interrupts  */
  TIM1_CC_IRQn                = 14,     /*!< TIM1 Capture Compare Interrupt                          */
  TIM2_IRQn                   = 15,     /*!< TIM2 Interrupt                                          */
  TIM3_IRQn                   = 16,     /*!< TIM3 Interrupt                                          */
  TIM6_DAC_IRQn               = 17,     /*!< TIM6 and DAC Interrupts                                 */
  TIM14_IRQn                  = 19,     /*!< TIM14 Interrupt                                         */
  TIM15_IRQn                  = 20,     /*!< TIM15 Interrupt                                         */
  TIM16_IRQn                  = 21,     /*!< TIM16 Interrupt                                         */
  TIM17_IRQn                  = 22,     /*!< TIM17 Interrupt                                         */
  I2C1_IRQn                   = 23,     /*!< I2C1 Interrupt                                          */
  I2C2_IRQn                   = 24,     /*!< I2C2 Interrupt                                          */
  SPI1_IRQn                   = 25,     /*!< SPI1 Interrupt                                          */
  SPI2_IRQn                   = 26,     /*!< SPI2 Interrupt                                          */
  USART1_IRQn                 = 27,     /*!< USART1 Interrupt                                        */
  USART2_IRQn                 = 28,     /*!< USART2 Interrupt                                        */
  CEC_IRQn                    = 30      /*!< CEC Interrupt                                           */
} IRQn_Type;

这个是可选的中断
回复

使用道具 举报

1

主题

59

帖子

0

精华

高级会员

Rank: 4

积分
967
金钱
967
注册时间
2012-3-27
在线时间
285 小时
发表于 2016-6-16 14:14:11 | 显示全部楼层
单片机大同小异,学会了M3,M0上手不难啊
回复

使用道具 举报

45

主题

104

帖子

0

精华

高级会员

Rank: 4

积分
573
金钱
573
注册时间
2016-6-16
在线时间
100 小时
 楼主| 发表于 2016-6-16 14:44:43 | 显示全部楼层
但是M0大部分都是用库函数配置中断,串口这些通信协议的,不知道该怎么配置
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-6-16 15:01:56 | 显示全部楼层
你非要直接操作寄存器也可以啊
回复

使用道具 举报

45

主题

104

帖子

0

精华

高级会员

Rank: 4

积分
573
金钱
573
注册时间
2016-6-16
在线时间
100 小时
 楼主| 发表于 2016-6-16 15:05:43 | 显示全部楼层
憨厚诚实大叔 发表于 2016-6-16 15:01
你非要直接操作寄存器也可以啊

那怎么设置优先级呢?M3有抢占优先级,子优先级,自然优先级,那M0有几种优先级呢?
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-6-16 15:15:52 | 显示全部楼层
M0只有4种优先级,只有抢占优先级,没有那个等待的优先级
回复

使用道具 举报

45

主题

104

帖子

0

精华

高级会员

Rank: 4

积分
573
金钱
573
注册时间
2016-6-16
在线时间
100 小时
 楼主| 发表于 2016-6-16 15:17:47 | 显示全部楼层
憨厚诚实大叔 发表于 2016-6-16 15:15
M0只有4种优先级,只有抢占优先级,没有那个等待的优先级

那能不能麻烦大神教我怎么去配置这个优先级呢?
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-6-16 15:30:06 | 显示全部楼层
建议用库函数,你非要用寄存器的话,我帮你找找吧
回复

使用道具 举报

45

主题

104

帖子

0

精华

高级会员

Rank: 4

积分
573
金钱
573
注册时间
2016-6-16
在线时间
100 小时
 楼主| 发表于 2016-6-16 16:10:27 | 显示全部楼层
憨厚诚实大叔 发表于 2016-6-16 15:30
建议用库函数,你非要用寄存器的话,我帮你找找吧

用库函数更好,就是因为我不会用库函数,因为M0的库函数和M3的中断库函数不一样,谢谢大神
回复

使用道具 举报

45

主题

104

帖子

0

精华

高级会员

Rank: 4

积分
573
金钱
573
注册时间
2016-6-16
在线时间
100 小时
 楼主| 发表于 2016-6-16 16:10:48 | 显示全部楼层
用库函数更好,就是因为我不会用库函数,因为M0的库函数和M3的中断库函数不一样,谢谢大神
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-6-16 16:28:15 | 显示全部楼层
还是给你库函数吧,中断的寄存器操作,要对照中断定义的数值,更麻烦
回复

使用道具 举报

45

主题

104

帖子

0

精华

高级会员

Rank: 4

积分
573
金钱
573
注册时间
2016-6-16
在线时间
100 小时
 楼主| 发表于 2016-6-16 16:37:15 | 显示全部楼层
憨厚诚实大叔 发表于 2016-6-16 16:30
NVIC_InitTypeDef NVIC_InitStructure;

        NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;     ...

NVIC_InitTypeDef NVIC_InitStructure;这个是什么东东呢?
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-6-16 16:41:10 | 显示全部楼层
配置中断的结构体啊
回复

使用道具 举报

45

主题

104

帖子

0

精华

高级会员

Rank: 4

积分
573
金钱
573
注册时间
2016-6-16
在线时间
100 小时
 楼主| 发表于 2016-6-16 16:45:04 | 显示全部楼层

那大神,
NVIC_EnableIRQ (EXTI0_1_IRQn);  //允许外部中断0、1   
NVIC_SetPriority ( EXTI0_1_IRQn, 2); //设置外部中断0、1的中断优先级别、
这样的效果是不是和您给我的中断配置优先级函数是一样的效果?
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-6-16 16:50:19 | 显示全部楼层
我看了下函数的原型,应该是一样的
回复

使用道具 举报

45

主题

104

帖子

0

精华

高级会员

Rank: 4

积分
573
金钱
573
注册时间
2016-6-16
在线时间
100 小时
 楼主| 发表于 2016-6-16 16:52:18 | 显示全部楼层
憨厚诚实大叔 发表于 2016-6-16 16:50
我看了下函数的原型,应该是一样的

谢谢,大神,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 05:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表