文章目录

  • K60学习笔记(开个坑,慢慢学)
    • 基础知识
      • 一系列定义或名称
      • 简单位运算
      • 中断(Interrupt)
        • 8051 定时器中断
    • Kinetis K60介绍
    • K60模块
      • PORT模块
      • GPIO模块

K60学习笔记(开个坑,慢慢学)

基础知识

一系列定义或名称

  • MCU微控制单元(Microcontroller Unit) ,又称单片微型计算机(Single Chip Microcomputer )或者单片机,是把中央处理器(Central Process Unit,CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。

  • 内存是计算机中重要的部件之一,它是外存与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器和主存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,操作系统就会把需要运算的数据从内存调到CPU中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。

  • UART通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。

  • PLC可编程逻辑控制器(Programmable Logic Controller,PLC),一种具有微处理器的用于自动化控制的数字运算控制器,可以将控制指令随时载入内存进行储存与执行。

  • DMA直接存储器访问(Direct Memory Access)是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。

  • GPIO通用型输入输出(General-purpose input/output),其接脚可以供使用者由程控自由使用

  • I2CInter-Integrated Circuit。I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。

  • SPI串行外设接口(Serial Peripheral Interface),是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。是一种高速、高效率的串行接口技术。

  • ADC模数转换器(analog to digital converter)作用是将时间连续、幅值也连续的模拟量转换为时间离散、幅值也离散的数字信号,因此,A/D转换一般要经过取样、保持、量化及编码4个过程。在实际电路中,这些过程有的是合并进行的。

  • DAC数模转换器(digital to analog converter)它是把数字量转变成模拟的器件。DAC主要由数字寄存器、模拟电子开关、位权网络、求和运算放大器和基准电压源(或恒流源)组成。用存于数字寄存器的数字量的各位数码,分别控制对应位的模拟电子开关,使数码为1的位在位权网络上产生与其位权成正比的电流值,再由运算放大器对各电流值求和,并转换成电压值。

  • PIT可编程间隔定时器(programmable interval timer)

简单位运算

  • ‘>>’,二进制右移。x>>5相当于除25^55并向下取整。

  • ‘<<’,二进制左移,效果参照’>>’。

  • ‘&’,按位与。x&0x1f相当于只取二进制最后五位。

中断(Interrupt)

  • 定义:指处理机处理程序运行中出现的紧急事件的整个过程。程序运行过程中,系统外部、系统内部或者现行程序本身若出现紧急事件,处理机立即中止现行程序的运行,自动转入相应的处理程序(中断服务程序),待处理完后,再返回原来的程序运行,这整个过程称为程序中断。
  • 优先级:在某一时刻有几个中断源同时发出中断请求时,处理器只响应其中优先权最高的中断源。当处理机正在运行某个中断服务程序期间出现另一个中断源的请求时,如果后者的优先权低于前者,处理机不予理睬,反之,处理机立即响应后者,进入所谓的“嵌套中断”。中断优先权的排序按其性质、重要性以及处理的方便性决定,由硬件的优先权仲裁逻辑或软件的顺序询问程序来实现。
  • 中断向量:对应每个中断源设置一个向量。这些向量顺序存在主存储器的特定存储区。向量的内容是相应中断服务程序的起始地址和处理机状态字。在响应中断时,由中断系统硬件提供向量地址,处理机根据该地址取得向量,并转入相应的中断服务程序。
  • “紧急事件”须向处理器提出申请(发一个电脉冲信号),要求“中断”,即要求处理器先停下“自己手头的工作”先去处理“我的急件”,这一“申请”过程,称中断请求(Interrupt ReQuest,IRQ)。

8051 定时器中断

8051的单片机有5个中断源,2个优先级

中断源:INT0(外部中断0),INT1(外部中断1),T0(定时器0),T1(定时器1),RXD和TXD(同属串口中断)

中断相关的特殊寄存器:

  • 中断允许控制寄存器(IE)--------控制各中断的开放和屏蔽

  • 定时器/计数器控制寄存器(TCON)-------定时器和外部中断的控制

  • 串行口控制寄存器(SCON)-------串行中断的控制

  • 中断优先级控制寄存器(IP)-------设置各中断的优先级

void funcname(void) interrupt x using y
{your code;
}

x 范围为0~4,分别代表5个中断源,例如外部中断INT0就是0,T0就是1,INT1就是2,T1就是3,串行中断就是4

y 的范围为0~3,分别表示4组工作寄存器,不写就用0,不写也可以

TLx和THx寄存器,x=0,1。高八位和低八位寄存器,用于计数,一共16位。TCON和TMOD,其中TCON用于开启定时器/计数器中断,TMOD用于设置定时器/计数器的工作方式。有以下四种例如TMOD= 0x01对应方式1。

TLx和THx的计算

例:定时10ms。晶振频率是12M,工作模式在方式1。

f = 12M/12 =1M(机械周期为时钟周期的112\frac{1}{12}121​)即1秒有10610^6106个机械周期,则10ms有10410^4104个机器周期。从而65536-10000=55536,意思是计数器从65536 一直减到 55536 所用的时间就是10ms。55536的十六进制是0xD8F0,所以设置 TH0 = 0XD8,TL0=0XF0。

#include<reg52.h>
sbit LED0=P1^0;
unsigned char i;void main()
{TMOD=0X01;  //设置使用定时器0,16位的定时/计数寄存器TL0=0xD8;    //低八位赋初值TH0=0XF0;    //高八位赋初值ET0=1;          //开启定时器0中断TR0=1;         //运行定时器0EA=1;          //开启中断总开关while(1);
}void Delay(void) interrupt 1 using 0
{i++;//  TR0=0;//进入中断函数时,关闭定时器  似乎不是必要的语句TL0=0XD8;//重新赋初值TH0=0XF0;if(i==20)//因为10ms一次处罚看不出明显结果,所以让20次触发才让灯变一次{LED0=~LED0;i=0;}//   TR0=1;//重新开启定时器   似乎不是必要的语句
}

Kinetis K60介绍

简单的说, K60 是一块 MCU 芯片,其内部还可以细分多个模块: Cortex-M4 内 核、 GPIO、 UART、 I2C、 SPI、 ADC、 DAC、 DMA、 PIT、 FTM 等。除 Cortex-M4 内核 模块外,其他的 GPIO、 UART 等模块就是 K60 的外设。

K60模块

PORT模块

PORT 模块,是 K60/KL26 的管脚管理模块,控制每个管脚复用到各个不同的内部模块(GPIO、UART、 I2C 等),还可以配置每个管脚的各种属性(上拉下拉电阻、无源滤波等)。 似乎是用来触发一系列中断而使用的。以下给出相应的函数,作为做软件的菜鸡虽然写不来但起码也得看吧。中断的逻辑应该为:

  • 中断初始化port_init
  • 设置中断向量set_vector_handler
  • 使能中断enable_irq直接调用库函数即可
//中断初始化函数,ptxn是对应端口号,cfg是端口属性配置
//example: port_init (PTA8, IRQ_RISING | PF | ALT1 | PULLUP ); 初始化 PTA8 管脚,上升沿触发中断,带无源滤波器,复用功能为GPIO(对应ALT1) ,上拉电阻
void  port_init(PTXn_e ptxn, uint32 cfg )
{SIM_SCGC5 |= (SIM_SCGC5_PORTA_MASK << PTX(ptxn));//开启PORTx端口PORT_ISFR_REG(PORTX_BASE(ptxn)) = (1<<PTn(ptxn));// 清空标志位PORT_PCR_REG(PORTX_BASE(ptxn), PTn(ptxn)) = cfg;// 复用功能 , 确定触发模式 ,开启上拉或下拉电阻
}//中断处理函数,PORT_FUNC函数前两个参数对应端口号,当对应引脚触发中断时会执行最后输入的函数,在这里是key
void PORTD_IRQHandler(void)
{PORT_FUNC(A,6,key);
}//设置中断向量表里的中断服务函数,只有中断向量表位于icf指定的RAM区域时,此函数才有效
//example:set_vector_handler(PIT0_VECTORn ,PIT0_IRQHandler)
void set_vector_handler(VECTORn_t vector , void pfunc_handler(void))
{extern uint32 __VECTOR_RAM[];ASSERT(SCB->VTOR == (uint32)__VECTOR_RAM);//断言,检测中断向量表是否在 RAM 里__VECTOR_RAM[vector] = (uint32)pfunc_handler;
}

GPIO模块

GPIO模块可以设置某一管脚的输入输出状态。一天攻破K60内列举的许多宏定义似乎并没有找到

智能车K60学习笔记相关推荐

  1. 小觅智能 |MSCKF 学习笔记

    转载自:https://mp.weixin.qq.com/s/shxmOtDOSVZn_eQKgs8LBw 小觅智能 |MSCKF 学习笔记 知乎觅 MYNTAI小觅智能 2019-10-31 VIO ...

  2. 多智能体系统仿真学习笔记:(一)ODE

    多智能体系统仿真学习笔记:(一)ODE (一)ODE的一般形式 Ⅰ.常微分方程 (ODE) Ⅱ.ODE方程组 Ⅲ.高阶ODE Ⅳ.复数ODE (二)Matlab中的ODE Ⅰ.Matlab中可求解的O ...

  3. 智能车基础学习JTAG接口

    从智能车的制作中知道中断的概念,但一直一知半解,最终下定决心好好打基础. 在一开始主要接触的是K60,所以这些基础知识也结合K60切入,之后可能会接触K66的有关内容,估计大同小异吧. JATG接口 ...

  4. 智能车基础学习电池与电机

    我们现在在智能车的绝大多数项目中使用的都是镍铬电池,电池规格为 7.2V 2000mAh:充满电后,电压大概为8V左右. 电池的记忆效应 镍镉电池如果长时间放电造成电池的电压过低,会使得电池产生记忆效 ...

  5. 智能指针_auto_ptr2_学习笔记

    //1,release函数只是简单的转移对内存的拥有权,自己变成null,不会delete,一般在将所有权转移给别的智能指针的时候使用.具体可参加源码. 例:#include <memory&g ...

  6. 《智能控制技术》学习笔记-1.绪论,智能控制定义、分类、发展及应用场景

    一.引言 先修内容: 经典控制理论.现代控制理论.MATLAB 引入:智能理论是新兴学科,随着数字计算机和人工智能发展而来,发展得益于许多学科:人工智能.认知科学.现代自适应控制.最优控制.神经元网络 ...

  7. 智能社JS学习笔记(一)

    前言 转眼工作即将半年,这段时间自学了UI,html和css方面能比较熟练的掌握了,写过两套小程序的模板但只知其然不知其所以然(还是因为自己js基础知识掌握的不够啊)用bootstrap之类的框架能写 ...

  8. 亚博智能PS2手柄学习笔记

    一.PS2 手柄介绍: PS2 由手柄与接收器两部分组成,手柄主要负责发送按键信息.都接通电源并打开手柄开关时,手柄与接收器自动配对连接(这是由于手柄与接收器之间依靠2.4G进行通信),在未配对成功的 ...

  9. 《智能合约Solidity学习笔记 - 僵尸军团》Part1- 搭建僵尸工厂

    pragma solidity ^0.4.19; //指定版本号/**关卡1 : 创建 根据输入的姓名 创建随机僵尸学习网址: https://cryptozombies.io/zh **/// 创建 ...

最新文章

  1. 机器学习(MACHINE LEARNING)MATLAB中微分方程的求解
  2. laravel5.4 关于select下拉框读取数据库数据案例
  3. linux新增动态库后可执行程序找不到的问题
  4. sql语句循环截取字符串
  5. js高程笔记1-3章
  6. Linux:VMware12.5.7安装Ubuntu16.04.2失败的解决方案cpufreq: cpufreq_online: Failed to initialize policy for cpu
  7. VC 实现程序只运行一个实例,并激活已运行的程序
  8. android开发---9.MediaPlayer实现音乐播放的demo
  9. matlab在solver,matlab的solver
  10. WxPython 界面利用pubsub与线程通讯
  11. 华为三层交换机5700系列配置示例
  12. snprintf()函数探讨
  13. 计算机网络管理员设备清单,网络管理员资料:计算机网络互联设备路由器
  14. 【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)
  15. Java媒体框架(JMF)
  16. pb数据窗口显示图片_王者荣耀背后的腾讯自研数据库TcaplusDB实践
  17. IntelliJ IDEA官网打不开的问题
  18. Linux中tar 命令压缩时报错 tar: Removing leading `/‘ from member names
  19. java 把拍到的图片保存_java 如何调用摄像头并拍照保存照片
  20. 【SDCC讲师专访】吕毅:链家网大数据平台的架构演进

热门文章

  1. 综述:演化遗传学发展历史简介
  2. Spring MVC使用篇(八)—— 处理器(Handler)方法的返回值
  3. JS:函数中的arguments
  4. AJ-Report小白配置大屏手册
  5. 数据结构(邓俊辉)-[第8章]
  6. 暴雪网易事件大讨论:Web3游戏未来发展趋势
  7. python-浮点数取整
  8. 红队笔记之go语言远控初探
  9. contentEditable,window.getSelection详解---可编辑div,容器,设置/获取光标位置,光标处插入内容及光标的操作
  10. 你有什么道理后悔没早点知道