查看: 6649|回复: 15

[评测分享] 【SAMV71精讲精练系列】2、通用IO实操

  [复制链接]
  • TA的每日心情
    开心
    2016-3-22 09:25
  • 签到天数: 115 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2015-11-14 01:57:45 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 _烟酒僧_ 于 2015-11-14 12:02 编辑

    前一篇帖子算是开了一个好头。

    另外,需要补充说明的一点是,上一篇验证了,SAMV71的CPU时钟是可以
    高达300MHZ的,但是你千万别指望外设的时钟也能达到300MHZ。
    这就好比我们的大脑与四肢,大脑(CPU)的反应速度总是要快于你的手脚
    (外设),否则岂不是违背科学了?
    有兴趣的可以编程验证一下,当外设时钟设置过高时,CPU会启用一个自保护
    程序,阻止程序的烧录,此时,你需要将芯片擦除一次,并且将外设时钟设置
    到一个合理的范围,可以继续烧录。
    QQ截图20151114015438.png
    另外,一边读(写)程序,一边学习的方法,是不是比单纯阅读数据手册和
    应用文档,更有效率和更有趣一些?
    论坛发帖毕竟是一种简单的学习方式,督促自己也方便他人,如果你也是一个
    技术狂热者,还可以加群交流 - 单片机嵌入式技术群 162388414,广告或者
    素质不佳者免入



    这里有两个概念首先需要了解一下,通用GPIO和外设PIO。
    这个并不是什么新鲜词,也不是爱特梅尔公司独创。我们都知道,从最基础的
    8051单片机开始,IO复用就普遍存在。这涉及到芯片设计的范畴,试想一下,
    若非如此,MCU的每一个功能我们都为它单独设计一个PIN,甭说ARM了,就算
    8051恐怕也会臃肿成一个“多足虫”。然后焊接、布线、PCBA面积、产品体积等
    一系列的问题都出来了……

    了解到这些,就足够了。学习一定是要有的放矢,才不至于眉毛胡子一把抓而不得其法。
    我记得念书的时候,不少同学非常刻苦却成绩平平,反倒有些该玩玩的那种很拔尖。
    你说他聪明吧,肯定是聪明,当然最主要的还是方法,此类人擅长把握事物的核心和本质。
    就好像第一次我听说电路板这个词的时候,我们都管它叫PCB,后来工作了发现也
    有叫PCBA的。当然这些都不是重点,我们也没必要纠结它到底该叫PCB还是PCBA?

    我们只需要了解,GPIO、PIO这二者在写程序的时候是互斥的、有你无我就行。
    以下是本篇的正题 - 使用GPIO模式点亮LED0,LED1
    QQ截图20151114101204.png

    需要注意的几点
    1、定义一个PIN
    #define LED0_PIN PIO_PA23_IDX#define LED1_PIN PIO_PC9_IDX

    2、GPIO使用之前需要初始化,调用如下函数
    static inline void ioport_init(void)
    {
            arch_ioport_init();
    }

    函数体如下
    __always_inline static void arch_ioport_init(void)
    {
    #ifdef ID_PIOA
            sysclk_enable_peripheral_clock(ID_PIOA);
    #endif
    #ifdef ID_PIOB
            sysclk_enable_peripheral_clock(ID_PIOB);
    #endif
    #ifdef ID_PIOC
            sysclk_enable_peripheral_clock(ID_PIOC);
    #endif
    #ifdef ID_PIOD
            sysclk_enable_peripheral_clock(ID_PIOD);
    #endif
    #ifdef ID_PIOE
            sysclk_enable_peripheral_clock(ID_PIOE);
    #endif
    #ifdef ID_PIOF
            sysclk_enable_peripheral_clock(ID_PIOF);
    #endif
    }

    如果我们只使用PA和PC,可以提取出来单独调用如下两个函数
            sysclk_enable_peripheral_clock(ID_PIOA);
            sysclk_enable_peripheral_clock(ID_PIOC);

    3、系统时钟初始化void sysclk_init(void)
    如果初始化不调用该函数,将默认使用片内4MRC振荡器
    IMG_20151114_113738.jpg
    以下贴出全部测试代码
    游客,如果您要查看本帖隐藏内容请回复






















    (End)
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-9-28 22:37
  • 签到天数: 456 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-11-14 17:06:11 | 显示全部楼层
      赞一个哇
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-3-22 09:25
  • 签到天数: 115 天

    连续签到: 1 天

    [LV.6]常住居民II

     楼主| 发表于 2015-11-14 21:18:05 | 显示全部楼层
    ALTIUM2 发表于 2015-11-14 17:06
    赞一个哇

    老朋友好久不见了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-9-28 22:37
  • 签到天数: 456 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-11-16 23:17:09 | 显示全部楼层
    _烟酒僧_ 发表于 2015-11-14 21:18
    老朋友好久不见了

    我天天都上来看看的,都潜水的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-11-17 18:09:07 | 显示全部楼层
    通用GPIO和外设PIO
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-5-12 13:20:38 | 显示全部楼层
    我也在学习这个芯片,谢谢分享
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-5-21 20:50:07 | 显示全部楼层
    非常棒 !thanks!非常棒 !
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-7-31 15:57:58 | 显示全部楼层
    楼主你好,我最近在学习Atmel SAME70开发板,写了一个程序发现延时函数不好用,显示错误       
    recipe for target 'src/ASF/common/services/delay/sam/cycle_counter.o' failed
    。开始以为是自己的错误,但是打开一个ASF例子还是会出现这个错误,可以帮我看一下么
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-7-31 16:03:56 | 显示全部楼层
    ALTIUM2 发表于 2015-11-14 17:06
    赞一个哇

    层主你好,我最近在学习Atmel SAME70开发板,写了一个程序发现延时函数不好用,显示错误       
    recipe for target 'src/ASF/common/services/delay/sam/cycle_counter.o' failed
    。开始以为是自己的错误,但是打开一个ASF例子还是会出现这个错误,可以帮我看一下么
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-7-31 16:04:50 | 显示全部楼层
    _烟酒僧_ 发表于 2015-11-14 21:18
    老朋友好久不见了

    楼主你好,我最近在学习Atmel SAME70开发板,写了一个程序发现延时函数不好用,显示错误       
    recipe for target 'src/ASF/common/services/delay/sam/cycle_counter.o' failed
    。开始以为是自己的错误,但是打开一个ASF例子还是会出现这个错误,可以帮我看一下么
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-3-29 13:05 , Processed in 0.187120 second(s), 35 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.