搜索
bottom↓
回复: 23

(转载) K60新手入门资料

[复制链接]

出0入0汤圆

发表于 2014-12-25 11:33:25 | 显示全部楼层 |阅读模式
转载地址:http://www.cnblogs.com/hebaichuanyeah/tag/K60/

希望给坛友们提供个方便,直接在坛内找到资源,越来越强大,谢谢,


第一 、 K60初体验之GPIO寄存器

一个简单的流水灯
  1. #include "common.h"

  2. #define LED1(a) if(a)\
  3.                    GPIOA_PDOR &= ~(1<<10);\
  4.                else\
  5.                    GPIOA_PDOR |= (1<<10)   

  6.                   
  7. #define LED2(a) if(a)\
  8.                    GPIOA_PDOR &= ~(1<<11);\
  9.                else\
  10.                    GPIOA_PDOR |= (1<<11)        
  11. #define LED3(a) if(a)\
  12.                    GPIOA_PDOR &= ~(1<<28);\
  13.                else\
  14.                    GPIOA_PDOR |= (1<<28)
  15.                   
  16. #define LED4(a) if(a)\
  17.                    GPIOA_PDOR &= ~(1<<29);\
  18.                else\
  19.                    GPIOA_PDOR |= (1<<29)   
  20.                      
  21. void init_gpio(void);
  22. void delay(long count);


  23. void main (void)
  24. {
  25.   init_gpio();

  26.   LED2(0);  
  27.   LED3(0);
  28.   
  29.   while(1)
  30.   {
  31.     LED4(0);   //灭
  32.     LED1(1);   //亮
  33.     delay(3000000);
  34.     LED2(1);
  35.     LED1(0);
  36.     delay(3000000);
  37.     LED3(1);
  38.     LED2(0);
  39.     delay(3000000);
  40.     LED3(0);
  41.     LED4(1);
  42.     delay(3000000);
  43.   }
  44. }

  45. void init_gpio()
  46. {

  47.   PORTA_PCR10 &= ~0x700;    //MUX 000
  48.   PORTA_PCR10 |= PORT_PCR_MUX(1);   //MUX 001 GPIO模式
  49.   PORTA_PCR11 &= ~0x700;
  50.   PORTA_PCR11 |= PORT_PCR_MUX(1);  
  51.   PORTA_PCR28 &= ~0x700;
  52.   PORTA_PCR28 |= PORT_PCR_MUX(1);  
  53.   PORTA_PCR29 &= ~0x700;
  54.   PORTA_PCR29 |= PORT_PCR_MUX(1);  
  55.   
  56.   GPIOA_PDDR |= ((1<<10)|(1<<11)|(1<<28)|(1<<29));  //设置为输出
  57. }

  58. void delay(long count)
  59. {
  60.   while(count--)
  61.       asm("nop");
  62. }
复制代码



第二、K60  UART寄存器 串口收发数据

main.c 文件
  1. #include "common.h"
  2. #include "uart.h"
  3. #include "isr.h"

  4. void UART4_Init(U32);                     
  5. void delay(long count);
  6. void Uart4_SendByte(U8 Char);


  7. void main (void)
  8. {
  9.   char str[]="hello cortex-m4  ";
  10.   U8 i;
  11.   
  12.   DisableInterrupts;  
  13.   UART4_Init(57600);
  14.   EnableInterrupts;
  15.   
  16.   while(1)
  17.   {
  18.     for(i=0; str[i]!='\0'; i++)
  19.       Uart4_SendByte(str[i]);
  20.     delay(7000000);
  21.   }
  22. }

  23. void delay(long count)
  24. {
  25.   while(count--)
  26.       asm("nop");
  27. }

  28. void UART4_Init(U32 BaudRate)
  29. {
  30.   U16 ubd, brfa;

  31.   U8 temp;
  32.    
  33.   PORTC_PCR15 = PORT_PCR_MUX(0x3);   //引脚使能
  34.   PORTC_PCR14 = PORT_PCR_MUX(0x3);
  35.   SIM_SCGC1 |= SIM_SCGC1_UART4_MASK;   //时钟使能


  36.   UART4_C2 &= ~((1<<2) | (1<<3)); //禁止发送接收   控制寄存器C2
  37.   
  38.   UART4_C1 = 0;  //控制器C1 全部使用默认配备

  39.   ubd = (U16)((50000000)/(BaudRate * 16));   //波特率设置

  40.   UART4_BDH = (U8)ubd>>8;  
  41.   UART4_BDL = (U8)(ubd);
  42.   
  43.   
  44.   brfa = (((50000000)/(BaudRate * 16)) - (ubd * 32));  //波特率微调 1/32的增量

  45.   temp = UART4_C4 & ~(UART_C4_BRFA(0x1F));
  46.   UART4_C4 = temp | UART_C4_BRFA(brfa);
  47.   

  48.   UART4_C2 |= ((1<<2) | (1<<3));  //允许发送接收

  49.   return;
  50. }

  51. void Uart4_SendByte(U8 Char)
  52. {

  53.     while(!(UART_S1_REG(UART4_BASE_PTR) & UART_S1_TDRE_MASK)); //UARTx_S1状态寄存器
  54.     UART4_D = Char;
  55.     return;
  56. }
复制代码


串口接收函数
  1. U8 Uart4_Receive(void)
  2. {
  3.     U8 Receivechar;
  4.     while(!(UART_S1_REG(UART4_BASE_PTR) & UART_S1_RDRF_MASK));       //查询是否接受到数据
  5.     Receivechar  =   UART4_D;                    //接受到8位的数据
  6.     return(Receivechar);
  7. }
复制代码


第三、K60 外部引脚中断

PA12引脚中断初始化:
  1. void Exit_Init(void)
  2. {
  3.   SIM_SCGC5 |= (1<<9);      //开启PORTA端口
  4.   
  5.   PORTA_PCR12 |= (1<<8) | (10<<16) | (3);  //GPIO 下降沿触发 上拉电阻
  6.   GPIOA_PDDR &= ~(1<<12);           //输入模式
  7.   enable_irq(87);   //使能PORT中断
  8. }
复制代码


中断服务函数:
  1. #include "common.h"
  2. #include "isr.h"

  3. char str[] = "EXIT  ";
  4. U8 i;

  5. void PORTA_IRQHandler(void)
  6. {

  7.     if(PORTA_ISFR & (1<<12))             //PTA12触发中断
  8.     {
  9.         PORTA_ISFR  |= (1<<12);          //写1清中断标志位
  10.         for(i=0; str[i]!='\0'; i++)
  11.             Uart4_SendByte(str[i]);        
  12.     }
  13. }
复制代码


阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出100入101汤圆

发表于 2014-12-25 11:48:50 | 显示全部楼层
这个稍微基础了些!

出0入0汤圆

 楼主| 发表于 2014-12-25 11:56:07 | 显示全部楼层
fengyunyu 发表于 2014-12-25 11:48
这个稍微基础了些!

是的,所以说入门嘛,给自己留个资料,以后也能参考,

出0入0汤圆

发表于 2014-12-25 12:01:38 | 显示全部楼层
感谢楼主分享,基础知识充电中~

出0入0汤圆

 楼主| 发表于 2014-12-25 12:03:50 | 显示全部楼层
来者 发表于 2014-12-25 12:01
感谢楼主分享,基础知识充电中~

嗯,感谢对你有帮助,,

你用这个板子的吗?

出0入0汤圆

发表于 2014-12-25 12:09:00 | 显示全部楼层
craigtao 发表于 2014-12-25 12:03
嗯,感谢对你有帮助,,

你用这个板子的吗?

我还在了解中 你发的这个正好可以给我充充电,谢楼主~

出0入0汤圆

 楼主| 发表于 2014-12-25 12:11:31 | 显示全部楼层
来者 发表于 2014-12-25 12:09
我还在了解中 你发的这个正好可以给我充充电,谢楼主~

哦哦,,不客气,,大家都一样学习,,嘿嘿,,愿上帝祝福你,圣诞快乐,

出0入0汤圆

 楼主| 发表于 2014-12-25 12:12:15 | 显示全部楼层
大家有其他的资料可以分享过来啊,,其他的模块的资料

出0入0汤圆

发表于 2014-12-25 12:14:02 | 显示全部楼层
太基础了,用不着了。才学习的朋友可以看看。

出0入0汤圆

发表于 2014-12-25 12:16:34 | 显示全部楼层
寄存器的操作可以看看,谢谢楼主分享

出100入101汤圆

发表于 2014-12-25 12:16:42 | 显示全部楼层
craigtao 发表于 2014-12-25 11:56
是的,所以说入门嘛,给自己留个资料,以后也能参考,

LZ可以参考下飞思卡尔Kinetis资料大本营http://www.amobbs.com/thread-5578503-1-1.html

出0入0汤圆

 楼主| 发表于 2014-12-25 12:16:49 | 显示全部楼层
浪里白条 发表于 2014-12-25 12:14
太基础了,用不着了。才学习的朋友可以看看。

恩恩,要的就是这种基础入门的,

出100入101汤圆

发表于 2014-12-25 12:17:14 | 显示全部楼层
来者 发表于 2014-12-25 12:09
我还在了解中 你发的这个正好可以给我充充电,谢楼主~

可以参考下飞思卡尔Kinetis资料大本营http://www.amobbs.com/thread-5578503-1-1.html

出0入0汤圆

 楼主| 发表于 2014-12-25 12:17:28 | 显示全部楼层
wxfje 发表于 2014-12-25 12:16
寄存器的操作可以看看,谢谢楼主分享

不客气,对你有帮助,感谢,,,

出0入0汤圆

 楼主| 发表于 2014-12-25 12:17:53 | 显示全部楼层
fengyunyu 发表于 2014-12-25 12:16
LZ可以参考下飞思卡尔Kinetis资料大本营http://www.amobbs.com/thread-5578503-1-1.html

哦 ,,,,谢谢啊,之前关注了一次,没有细看,

出0入0汤圆

发表于 2014-12-25 12:44:10 | 显示全部楼层
fengyunyu 发表于 2014-12-25 12:17
可以参考下飞思卡尔Kinetis资料大本营http://www.amobbs.com/thread-5578503-1-1.html

谢谢,圣诞快乐~

出0入0汤圆

发表于 2014-12-25 12:44:44 | 显示全部楼层
craigtao 发表于 2014-12-25 12:11
哦哦,,不客气,,大家都一样学习,,嘿嘿,,愿上帝祝福你,圣诞快乐, ...

圣诞快乐~~

出0入0汤圆

发表于 2014-12-25 13:52:38 | 显示全部楼层
新手最好还是买本书看。
工程师经验手记系列:<<轻松玩转ARM Cortex-M4微控制器——基于Kinetis K60>>

出0入0汤圆

 楼主| 发表于 2014-12-25 13:54:03 | 显示全部楼层
32MCU 发表于 2014-12-25 13:52
新手最好还是买本书看。
工程师经验手记系列:

谢谢你的建议,我正要找这本书呢,

出0入0汤圆

发表于 2014-12-25 20:47:11 | 显示全部楼层
寄存器版本的 ,还没用到库

出0入0汤圆

发表于 2014-12-25 21:04:07 | 显示全部楼层
还是喜欢lib版本的

出0入0汤圆

发表于 2014-12-25 21:04:37 | 显示全部楼层
32MCU 发表于 2014-12-25 13:52
新手最好还是买本书看。
工程师经验手记系列:

这本书真心不错,推荐

出0入0汤圆

发表于 2014-12-25 22:09:43 | 显示全部楼层
32MCU 发表于 2014-12-25 13:52
新手最好还是买本书看。
工程师经验手记系列:

这本书教得挺细的 可惜没有电子版 看样子只能买本实体书了 可以收藏

出0入0汤圆

 楼主| 发表于 2014-12-26 08:47:04 | 显示全部楼层
秦天 发表于 2014-12-25 22:09
这本书教得挺细的 可惜没有电子版 看样子只能买本实体书了 可以收藏

有电子版的,,,
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 00:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表