打印
[PIC®/AVR®/dsPIC®产品]

使用MCC学习PIC单片机

[复制链接]
6774|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 oxygenzz 于 2019-4-18 15:32 编辑

MCC是Microchip的图型化芯片配置工具和代码生成器,十足的开发利器。
但其实它也是一个很好的学习利器。图形化界面可以与数据手册进行对照,避免了单纯阅读数据手册的枯燥,可加快理解芯片工作原理。并且可进一步研读MCC生成的代码,从寄存器级别了解芯片的配置。并且可以从中理解MCC的代码架构设计。这一架构是Microchip固件专家精心设计的,符合自家硬件和编译器的特性,且易用,高效,精简,非常适用于资源受限MCU的开发。

因此对于初学者,或有一定使用经验想要继续深入的开发者,MCC都是一个非常好的学习工具。MCC可以免费下载使用。不论你手里没有硬件板,都可以开始学习了。

下面举个简单例子,让大家感受一下这样学习的直观便利。。
下面是的PIC18F18446 的MCC时钟配置界面。时钟选择下拉框里面列出了可选的6种时钟。


它们与下图中,数据手册的时钟模块框图中的6种时钟一一对应,并且他们的选用控制通道一目了然。其中也能看到控制多路选择的控制位名称,例如COSC<2:0>控制时钟选通通道,CDIV<3:0>控制分频比率。系统时钟和外设时钟同源,但在不同休眠模式下,可以分别控制。

MCC与数据手册互相印证,数据手册提供了最详细的信息。

在MCC生成代码后,可在工程中,查看这些MCC生成的代码。定位到时钟初始化代码。
代码里是直接寄存器赋值,并带有清楚明确的注释。代码中通过操作OSCCON1 和OSCFRQ将时钟切换为内部4MHz。
void OSCILLATOR_Initialize(void)
{
   // NOSC HFINTOSC; NDIV 1;
   OSCCON1 = 0x60;
   // CSWHOLD may proceed; SOSCPWR Low power;
   OSCCON3 = 0x00;
   // MFOEN disabled; LFOEN disabled; ADOEN disabled; SOSCEN disabled;EXTOEN disabled; HFOEN disabled;
   OSCEN = 0x00;
   // HFFRQ 4_MHz;
   OSCFRQ = 0x02;
   // HFTUN 0;
   OSCTUNE = 0x00;

}
再去对照数据手册,了解每一位/位域的具体含义。


代码中与时钟配置相关还有芯片配置位,它们设定了芯片上电或复位后的起始时钟状态。代码在device_config.c中。
// CONFIG1
#pragma config FEXTOSC = OFF    // External Oscillator mode selectionbits->Oscillator not enabled
#pragma config RSTOSC = HFINT1    // Power-up default value for COSCbits->HFINTOSC (1MHz)
#pragma config CLKOUTEN = OFF    // Clock Out Enable bit->CLKOUT functionis disabled; i/o or oscillator function on OSC2
#pragma config CSWEN = ON    // Clock Switch Enable bit->Writing toNOSC and NDIV is allowed
#pragma config FCMEN = ON    // Fail-Safe Clock Monitor Enablebit->FSCM timer enabled


再到数据手册了解具体含义。原来复位后初始使用内部时钟(HFINTOSC 1MHz),配置位FEXTOSC设为b100 (外部振荡器未使能),RSTOSC设为b110 (HFINTOSC1MHz)。


至此,时钟的配置情况可以总结为:
1. 复位后,MCU运行在内部1MHz。

2. 执行时钟初始化函数后,系统时钟切换为内部4MHz。


沙发
小明的同学| | 2019-3-21 21:50 | 只看该作者
没有用过看看看

使用特权

评论回复
板凳
zyaoping| | 2019-3-23 10:42 | 只看该作者
谢谢分享!学习中。

使用特权

评论回复
地板
xinxianshi| | 2019-3-23 21:20 | 只看该作者
看来图形化是未来趋势。

使用特权

评论回复
5
wanduzi| | 2019-3-28 12:48 | 只看该作者
用了这个就简单多了

使用特权

评论回复
6
parameters| | 2019-3-28 16:17 | 只看该作者
感谢经验分享!学习了。

使用特权

评论回复
7
CoolSilicon| | 2019-3-29 08:36 | 只看该作者
加油加油!还有18个MCC模块!

使用特权

评论回复
8
wkpde21| | 2019-8-22 14:03 | 只看该作者
下载下载

使用特权

评论回复
9
wkpde21| | 2019-8-22 17:32 | 只看该作者

使用特权

评论回复
10
susceptibility| | 2019-8-25 10:27 | 只看该作者
感谢经验分享!学习了。

使用特权

评论回复
11
hhxs0216| | 2019-8-26 17:10 | 只看该作者
新项目用到MPLAB X IDE + PICC(v9.83) 不知道MCC是否支持生成?

想要了解MCC,希望楼主给个下载链接,谢谢。

使用特权

评论回复
12
gao_tiantian| | 2019-8-28 16:45 | 只看该作者
顶楼主!

使用特权

评论回复
13
lcczg| | 2019-8-29 10:31 | 只看该作者
hhxs0216 发表于 2019-8-26 17:10
新项目用到MPLAB X IDE + PICC(v9.83) 不知道MCC是否支持生成?

想要了解MCC,希望楼主给个下载链接,谢 ...

确实很好用。https://www.microchip.com/mplab/mplab-code-configurator 页面中部的Current Download

使用特权

评论回复
评论
MllM 2022-2-16 12:00 回复TA
PIC16F73这款芯片MCC支持吗、目前用的MPLABX IDEv5.45好像不支持,哪个步骤支持 
14
TIkiTAka| | 2019-8-30 11:04 | 只看该作者
增一下楼层,哪位大佬有PIC18F66K22的例程吗  最好是 X IDE环境的,十分感谢啊,提供下载链接也可以

使用特权

评论回复
15
deepblueyqw| | 2019-9-2 13:32 | 只看该作者
mcc生成的*.c
用复制到main.c中?

使用特权

评论回复
16
捉虫天师| | 2019-9-25 22:59 | 只看该作者
MCC从个哪儿找?

使用特权

评论回复
17
捉虫天师| | 2019-9-25 23:00 | 只看该作者

这个插件吗

使用特权

评论回复
18
捉虫天师| | 2019-9-25 23:42 | 只看该作者
大家都慢慢支持图形化了,看谁家做的好了。

使用特权

评论回复
19
zhuomuniao110| | 2019-12-20 00:16 | 只看该作者
最近很火。

使用特权

评论回复
20
guojunhope| | 2020-6-5 08:17 | 只看该作者
deepblueyqw 发表于 2019-9-2 13:32
mcc生成的*.c
用复制到main.c中?

不用,MCC简单的理解,就是帮你搭建好框架,配好基础的函数以及调用的流程,你需要做的只是构建自己的主程序回路,以及中断响应的具体功能

使用特权

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

本版积分规则

46

主题

190

帖子

11

粉丝