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

PIC18F16Q41点灯、外部中断、串口发送、中断接收

[复制链接]
7541|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
以前从来没有接触过PIC的单片机,相当于所有的东西都从头来,下面是学习的过程,希望能有所帮助
一、PIC18F16Q41Curiosity Nano 评估套件收到了, 京东快递, 先看下图
二、下载及安装开发环境
1、MPLABXIDE开发环境,www.microchip.com-->Tools and Software-->MPLAB® X IDE下拉到下载位置,下载最新版本的,下载地址:
https://www.microchip.com/en-us/development-tools-tools-and-software/mplab-x-ide
2、1、MPLAB XC开发环境,www.microchip.com-->Tools and Software-->MPLAB® XC Compiler,下拉到下载位置,下载最新版本的,下载地址:https://www.microchip.com/en-us/development-tools-tools-and-software/mplab-xc-compilers

3、安装开发环境,安装MPLABXIDE,按照提示一步步的进行就可以了,提示安装两个驱动,也都同意就行;安装MPLAB XC8,按照提示一步步的进行,在下图时要将两个都选择,自动把环境变量配置好
三、安装MCC(图形化配置生成代码)
1、打开MPLAB X IDETools-->Plugins
2、打开Plugins选择Available Plugins,下拉找到MPLAB  Code Configurator,勾选后,点击下方的Install,按照提示进行安装MCC,会出现下载进度条
三、写一个LED亮灯程序
1、插上开发板到电脑USB,会弹出这个Kit的资料,可以选择下载资料(下载原理图),打开MPLAB X IDE ,点南File--->New Project
2、选择Microchip嵌入式--->独立项目--->Next
3、根据开发板,选择芯片型号,注意要插上开发板,最后的那个器件就会出现
4、选择编译器,选择下图所示
5、输入项目各称和项目存储位置,占击Finish完成配置,选择下图所示
6、点击MCC,进行寄存器配置等,下图所示
7、系统时钟配置等,下图所示,内部时钟,8M,使能PLL,时钟分频为1(不会频),不使能看门狗
8、根据原理图,RC0接的是按键,选择Pin Module,在最右侧的芯片示意图的RC0右键选择Pin ModuleGPIOinput,配置好按键IO
9、根据原理图,RC1接的是LED,选择Pin Module,在最右侧的芯片示意图的RC1右键选择Pin ModuleGPIOoutput,配置好按键IO
10、配置好的IO口如下图所示,注意因为按键的外部无上下拉电阻,需用内部的上拉电阻,RC0选择WPU
11、配置好的IO口如下图所示,注意因为按键的外部无上下拉电阻,需用内部的上拉电阻,RC0选择WPU,配置完成后,点击左侧的Ge注意:每次改完图形化配置后,都必须点击此按钮,此按钮是图形化配置工具生成代码的按钮,结果在最下方的Output
12、点击Files--->展开项目名---->双击main.c添加代码

13、IO_RC1_Toggle()来源是pin_manager.h文件中,所有的API都可以在相应的文件中去寻找,相应的使用范例也都在注释文档中

14、点击下图所示的按钮,进行编译,编译结果如下图
15、点击下图所示的按钮,进行下载到开发板,下载结果如下图
16、点击下图所示的按钮,进行下载到开发板,下载结果如下图,完成第一个程序
17、点击MCC--->Available Resources--->EXT_INT绿色+位置下图所示的按钮,配置外部中断程序,使用外部中断作为按键的检测,外接按键的是下降沿为按下按键,上升沿为弹起按键

18、点击Interrupt Module--->勾选Vectored Interrupt Enable--->INT1IINT2I勾选取掉,注意此时为高优先级中断,High Priority勾选了,表示为高优先级中断,相应开中断时也选择高优先级中断打开。

19、点击Gener...生成代码
20、点击Files-->双击ext_int.c在代码中添加一个标志位,此位置为中断服务程序

21、点击Files-->双击main.c添加如下所示代码,注释掉闪灯代码,点击编译按钮编译代码,点击下载按钮下载代码,运行观察一下,按一个按键,灯的状态变换一次。
22、关于中断的服务函数查找方法,在库函数树中找到interrupt_manager.h文件,双击进入后,找到INTERRUPT_GlobalInterruptHighDisable()为开总中断函数。
23、配置串口通信,点击MCC,进入MCC配置页面,点击UART1前的绿色+号,将UART1添加到系统中。
24、配置串口通信,如下图所示配置波特率、使能串口中断,其中最后一项是利用调试器的模拟串口和计算机通信,勾选Redirect STDIO to UART,可以利用printf函数直接将数据发送到计算机。同时将IO端口配置成UART模式,分别在RB57右键,选择UART1RXTX


25、配置串口通信中断,如下图所示进行选择。
26、配置完成,生成代码。

27、双击uart1.c,修改如下部分代码,实现功能是接收到一个字节就发送出去,收什么发什么。
28、双击main.c,修改如下部分代码,实现初始化完成后发送system start!,按键按下后,发送press button!,每按一次就发送一次。另外,中断模式的按键可以考虑加一个电容做硬件防抖,也可以考虑软件防抖,这里主要是为了实现外部中断的功能。
8、测试结果,可以看到下载程序后发送了system start!;按一次按键发送一次press button!;发送12,收到12,前两次不是12不知道是什么原因,暂时没有时间,就先不找问题在哪了,后面有时间了再好好找找。此实验实现在外部中断功能,串口中断接收功能,串口发送数据功能,IO口输入功能,IO口输出功能。



图片37.png (165.16 KB )

图片37.png

图片19.png (371.5 KB )

图片19.png

test3.X.rar

486.08 KB

PIC18F16Q41评估板试验.pdf

3.34 MB

使用特权

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

本版积分规则

73

主题

821

帖子

3

粉丝