这个是补上昨天的,另外下午还要再学习一节
原理图
LED灯与外部引脚的连接情况
D1-E6-9
D2-E7-10
D3-E11-14
D4-E12-15
低电平有效时灯亮
SIM模块
功能:管理所有外设的时钟开关
12.2.12 SIM_SCGC5
地址0x4004_8038
第9-13位控制PORTA-E的时钟开关
PORT模块
功能:管理引脚的复用
11.5.1 PORTx_PCRn
地址
8-10位控制引脚的复用功能
GPIO模块
55.2.1 Port Data Output Register (GPIOx_PDOR)
当引脚复用为GPIO的时候
0-低电平输出
1-高电平输出
55.2.2 Port Set Output Register (GPIOx_PSOR)
写0的时候没有意义,但是写1的时候,相应的位会被置1
55.2.3 Port Clear Output Register (GPIOx_PCOR)
写0的时候没有意义,但是写1的时候,相应的位会被置0
55.2.4 Port Toggle Output Register (GPIOx_PTOR)
写0的时候没有意义,但是写1的时候,相应的位会反转逻辑
55.2.5 Port Data Input Register (GPIOx_PDIR)
读取外部的电平
0-外部的低电平
1-外部的高电平
55.2.6 Port Data Direction Register (GPIOx_PDDR)
GPIO的方向设置
0-输入功能
1-输出功能
目标:点亮第一个小灯D1
代码的流程
配置SIM模块,打开PORTE开关
配置PORT的功能,MUX(1)
GPIO配置为输出模式,选中第六位,置1
输出逻辑0,即低电平,置0
工程配置
建立工程的时候在Device中选择芯片型号
Debug中选择在线调试,选择J_link,在右边的setting中选择协议为sw
Utilities->setting->选择Reset and Run
代码
#include"MK60D10.h"
int main()
{
SIM->SCGC5 |= SIM_SCGC5_PORTE_MASK;
`在配置GPIO的复用的时候,最好先将对应位清零,之后再去设置-`
PORTE->PCR[6] &= ~PORT_PCR_MUX_MASK;
PORTE->PCR[6] |= PORT_PCR_MUX(1);
PTE->PDDR |= (1<<6);
PTE->PDOR &= ~(1<<6);
}