图书馆借的书,《16位单片机c语言编程基于PIC24》,人民邮电出版社。很不错的一本书。看了书才发现自己学习过程中忽略和轻视的部分很多,一一记录下来吧。
1:关于main函数
在进入main函数之前,微控制器会执行连接器自动插入一个较短的初始化代码段。这个代码段又被称为c0码。c0码将实现基本的例行内务处理,包括微控制器栈的初始化以及其他事物。
2:连接脚本
连接器脚本(.gld)文件是用来告诉连接器内存的预定义位置(由设备数据表决定)和提供基本的内存空间信息,如内存的可用空间大小、RAM存储器的可用空间大小及其地址范围。
3:GPIO初始化
大部分的PORTB引脚与模数转换时复用的,在默认状态下,同“模拟”输入服用的引脚与“数字”输入端口是断开的。因此简单的只是设置TRISB与PORTB是不能控制数字端口B的。
4:关于printf函数
C30的编译器支持printf函数,但是一个简单的printf函数可能导致可执行文件增加几千字节的代码。慎用!!
5:5V电压兼容
PIC24FJ系列是3VCMOS工艺的,要连接到5V设备很简单:
a:为了驱动一个5V的输出信号,要使用ODCx控制寄存器将每一个输出引脚设置为开漏极模式,并连接外部上拉电阻到5V。
b:数字输入引脚本身可以承受5V电压,可以直接连至5V输入信号(但是和模拟服用的引脚不能)。
关键字:PIC 读书笔记 编译 链接 GPIO初始化
引用地址:
PIC读书笔记1:编译、链接,GPIO初始化,5V电压兼容
推荐阅读最新更新时间:2024-03-16 15:07
HC-SR04超声波模块51+PIC单片机例程
单片机源程序如下: //晶振=8M //MCU=STC10F04XE //P0.0-P0.6共阳数码管引脚 //Trig = P1^0 //Echo = P3^2 #include reg52.h //包括一个52标准内核的头文件 #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long //*********************************************** sfr CLK_DIV = 0x97; //为STC单片机定义,系统时钟分频 //为STC单
[单片机]
华为平板M6系统更新,新增了支持华为的方舟编译器
据热心网友分享,华为平板M6现已推送EMUI 9.1.1.109版本更新,除优化问题与提升系统体验外,新版本新增支持华为方舟编译器。 官方介绍,方舟编译器是安卓性能的革命性突破。这是业界首个多语言联合优化的编译器,开发者在开发环境中可以一次性将多语言统一编译为一套机器码,运行时无需产生跨语言带来的额外消耗,并可以进行跨语言的联合优化,提升运行效率。 据悉,方舟编译器在开发环境中就可以完成全部代码的编译,手机安装应用程序后无需依赖虚拟机资源,即可全速运行程序,带来效率上的极大提升。 除了更新支持方舟编译器之外,华为平板M6还优化了指纹解锁性能;优化语音助手功能;优化部门第三方应用在横屏状态下的界面显示效果;优化屏幕触摸灵敏度
[手机便携]
PIC单片机的Page和Bank
让我们来从PIC的指令结构上来分析一下为什么PIC中要有BANK和PAGE的设置吧。先来看一下为什么PIC中要把RAM区划分多个BANK。 仔细观察PIC汇编语言指令的格式,一条完整的汇编语言指令语句通常是这样的:标号 操作码助记符 操作数1,操作数2;注释。其中,主体部分是 操作码助记符 操作数1,操作数2 。 例如: 指令:MOVF 33,1 操作码助记符:MOVF ; 操作数1:33 ; 操作数2:1 ; 而在程序被编译时指令语句的主体部分会被转换为代码的形式,通常是:指令代码 操作数2 操作数1。 例如在指令位数为14位的中档PIC单片机中: 指令:MOVF 33,1 转换后代码:00 1000 1 011
[单片机]
Microchip扩展PIC单片机产品线 全新PIC32系列尽显32位优势
提供由单一开发环境支持的8位、16位及32位产品线的唯一单片机供应商 全球领先的单片机和模拟半导体供应商——美国微芯科技公司(Microchip Technology Inc.)今天宣布推出全新32位PIC32单片机(MCU)系列。PIC32系列在性能和存储上均有显著提升,其引脚、外设和软件也保持了与Microchip 16位单片机/数字信号控制器系列的兼容性。此外,新系列器件还得到Microchip免费MPLAB集成开发环境的全面支持,使移植过程化繁为简,同时能够省去客户在开发工具方面的重复投资。MPLAB集成开发环境具备前所未有的兼容性,可支持Microchip包括8位、16位及32位器件在内的完整产品线。 Microch
[单片机]
【MPC5744P】S32DS编译生成Hex文件的方法
S32DS中编译生成MPC5744P项目时,默认只生成elf文件,elf文件包含众多调试信息,因而相较于hex文件,体积要大得多,而且需要另外开发elf解析模块,不如hex通用。 设置生成Hex的方法如下: 1、项目中右键- Properties 2、在C/C++ Build - Setting - Build Steps - Post-build steps - Command: 中输入:powerpc-eabivle-objcopy -O ihex ${ProjName}.elf ${ProjName}.hex,Description随意,例如:生成hex文件 3、然后点击OK,再次编译就可以看到Hex文件。
[单片机]
KEIL编译器C51.EXE的问题
出现如此错误:FATAL ERROR L210: I/O ERROR ON INPUT FILE: EXCEPTION 0021H: PATH OR FILE NOT FOUND. 后来查了查说是MCU内存不够用,辗转之后,发现自己的KEIL没有破解,不能编译大于2K的程序. 重新破译了KEIL 2后,加载它的编译器C51.EXE到新华龙的IDE中就好了. 程序算是编译过去了,发现调试器连不上. 出现提示:The serial adapter must be re-programmed in order to function 意思是串行适配器必须重新改编为适应IDE的函数. 因为调试器能读出来序列号.所以
[单片机]
嵌入式Linux学习笔记之——代码重定位002_链接脚本的引入
① NOR启动: ② nand 启动: 上次讲到的g_char不能按照程序正确输出的原因是nor启动的时候g_char在nor flash中,其不可写的特性决定了输出结果。 现在能否修改Makefile让nor启动时讲代码拷贝到SDRAM中,这样就可以实现全局变量的可读可写了。 现在想在nor flash启动的时候将其中的代码段拷贝至SDRAM中0地址起始的空间,将全局变量g_char拷贝至0x30000000起始的空间。 编译之后发现.bin文件变成了800M,805306369-- 0x30000001,符合程序中的g_char所占1字节的设置。 但是nor flash一共才2M,不可实现。 解决方
[单片机]