专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
NXP
(转载) K60新手入门资料
2020-02-20 20:07
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
9635
24
24
转载地址:
http://www.cnblogs.com/hebaichuanyeah/tag/K60/
希望给坛友们提供个方便,直接在坛内找到资源,越来越强大,谢谢,
第一 、 K60初体验之GPIO寄存器
一个简单的流水灯
#include "common.h"
#define LED1(a) if(a)
GPIOA_PDOR &= ~(1<<10);
else
GPIOA_PDOR |= (1<<10)
#define LED2(a) if(a)
GPIOA_PDOR &= ~(1<<11);
else
GPIOA_PDOR |= (1<<11)
#define LED3(a) if(a)
GPIOA_PDOR &= ~(1<<28);
else
GPIOA_PDOR |= (1<<28)
#define LED4(a) if(a)
GPIOA_PDOR &= ~(1<<29);
else
GPIOA_PDOR |= (1<<29)
void init_gpio(void);
void delay(long count);
void main (void)
{
init_gpio();
LED2(0);
LED3(0);
while(1)
{
LED4(0); //灭
LED1(1); //亮
delay(3000000);
LED2(1);
LED1(0);
delay(3000000);
LED3(1);
LED2(0);
delay(3000000);
LED3(0);
LED4(1);
delay(3000000);
}
}
void init_gpio()
{
PORTA_PCR10 &= ~0x700; //MUX 000
PORTA_PCR10 |= PORT_PCR_MUX(1); //MUX 001 GPIO模式
PORTA_PCR11 &= ~0x700;
PORTA_PCR11 |= PORT_PCR_MUX(1);
PORTA_PCR28 &= ~0x700;
PORTA_PCR28 |= PORT_PCR_MUX(1);
PORTA_PCR29 &= ~0x700;
PORTA_PCR29 |= PORT_PCR_MUX(1);
GPIOA_PDDR |= ((1<<10)|(1<<11)|(1<<28)|(1<<29)); //设置为输出
}
void delay(long count)
{
while(count--)
asm("nop");
}
复制代码
第二、K60 UART寄存器 串口收发数据
main.c 文件
#include "common.h"
#include "uart.h"
#include "isr.h"
void UART4_Init(U32);
void delay(long count);
void Uart4_SendByte(U8 Char);
void main (void)
{
char str[]="hello cortex-m4 ";
U8 i;
DisableInterrupts;
UART4_Init(57600);
EnableInterrupts;
while(1)
{
for(i=0; str[i]!=' '; i++)
Uart4_SendByte(str[i]);
delay(7000000);
}
}
void delay(long count)
{
while(count--)
asm("nop");
}
void UART4_Init(U32 BaudRate)
{
U16 ubd, brfa;
U8 temp;
PORTC_PCR15 = PORT_PCR_MUX(0x3); //引脚使能
PORTC_PCR14 = PORT_PCR_MUX(0x3);
SIM_SCGC1 |= SIM_SCGC1_UART4_MASK; //时钟使能
UART4_C2 &= ~((1<<2) | (1<<3)); //禁止发送接收 控制寄存器C2
UART4_C1 = 0; //控制器C1 全部使用默认配备
ubd = (U16)((50000000)/(BaudRate * 16)); //波特率设置
UART4_BDH = (U8)ubd>>8;
UART4_BDL = (U8)(ubd);
brfa = (((50000000)/(BaudRate * 16)) - (ubd * 32)); //波特率微调 1/32的增量
temp = UART4_C4 & ~(UART_C4_BRFA(0x1F));
UART4_C4 = temp | UART_C4_BRFA(brfa);
UART4_C2 |= ((1<<2) | (1<<3)); //允许发送接收
return;
}
void Uart4_SendByte(U8 Char)
{
while(!(UART_S1_REG(UART4_BASE_PTR) & UART_S1_TDRE_MASK)); //UARTx_S1状态寄存器
UART4_D = Char;
return;
}
复制代码
串口接收函数
U8 Uart4_Receive(void)
{
U8 Receivechar;
while(!(UART_S1_REG(UART4_BASE_PTR) & UART_S1_RDRF_MASK)); //查询是否接受到数据
Receivechar = UART4_D; //接受到8位的数据
return(Receivechar);
}
复制代码
第三、K60 外部引脚中断
PA12引脚中断初始化:
void Exit_Init(void)
{
SIM_SCGC5 |= (1<<9); //开启PORTA端口
PORTA_PCR12 |= (1<<8) | (10<<16) | (3); //GPIO 下降沿触发 上拉电阻
GPIOA_PDDR &= ~(1<<12); //输入模式
enable_irq(87); //使能PORT中断
}
复制代码
中断服务函数:
#include "common.h"
#include "isr.h"
char str[] = "EXIT ";
U8 i;
void PORTA_IRQHandler(void)
{
if(PORTA_ISFR & (1<<12)) //PTA12触发中断
{
PORTA_ISFR |= (1<<12); //写1清中断标志位
for(i=0; str[i]!=' '; i++)
Uart4_SendByte(str[i]);
}
}
复制代码
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
24条回答
秦天
2020-02-23 07:32
32MCU 发表于 2014-12-25 13:52
新手最好还是买本书看。
工程师经验手记系列:
这本书教得挺细的 可惜没有电子版 看样子只能买本实体书了 可以收藏
加载中...
查看其它24个回答
一周热门
更多
>
相关问题
手把手学会例程系列:i.MX<二>:图解i.mx53源码补丁+烧录(...
59 个回答
从零开始MQX开发之二 创建与调试MQX项目
24 个回答
7009: Trim value invalid, value is blank or zero是什么错误
0 个回答
怎么头像消失啊?
23 个回答
求推荐KINETIS评估板:必备USB HS,ETHERNET
5 个回答
相关文章
基于IMX6Q移植uboot2018-09——添加单板
0个评论
IMX6UL定时器按键消抖实验
0个评论
I.MX6U处理器LED灯点亮汇编程序代码编写
0个评论
在NXP I.MX6上做一个基于Opencv和OpenGL的打砖块游戏
0个评论
【RFID安全】浅谈卡片破解
0个评论
LM75a
0个评论
emwin字库制作及汉字显示
0个评论
STM32学习之I2C
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
NXP
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
这本书教得挺细的 可惜没有电子版 看样子只能买本实体书了 可以收藏
一周热门 更多>