0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SAM4S Xplained pro的示例代码分析详解

电子工程师 作者:工程师陈翠 2018-06-18 07:18 次阅读

记得刚接触单片机的时候使用的是STC89C52单片和keil 开发环境,记得当时写程序都是把程序要实现的功能全部放到一个main.c的函数中去,刚开始完成的功能还是比较简单。后来学习了STM32F407 知道了还有固件库这么个可以加快开发速度的东西。将不同的功能的代码放在了不同的文件中去(gpio.c、IIC.c等)进行归类。这种方法便于程序的管理维护和扩展其他的功能,现在的单片机以不再是十几年前的51汇编时代,现在动辄上M的flash存储空间,除非一些对时序要求特别高,或者是操作系统内核调度中会用到汇编,基本上单片机开发使用的是C语言。模块化、分层的思想对开发和维护以及后期的功能扩展都是很有帮助。

ASF,Atmel Software Frame 其实ASF也只是一个代号而已,可以理解为他是Atmel 公司开发的兼容Atmel公司单片机的一个固件库。其中包括了一些驱动、I/O的控制、协议等一些底层驱动,供给用户来调用加快开发速度。

打开的昨天的示例程序,会看到如图3-1 所示的文件结构

SAM4S Xplained pro的示例代码分析详解

main.c中主要存放的是示例程序的主程序。ASF的文件夹中主要包括了一系列的板级支持包,比如I/O口的配置、spi等配置文件还有开发板上的OLED屏幕以及SD卡的驱动函数。在thirdparty文件夹中有CMSIS和fatfs。

CMSIS(Cortex Microcontroller Software Interface Standard)是ARM Cortex™ 微控制器软件接口标准,是 Cortex-M 处理器系列的与供应商无关的硬件抽象层,是内核与外设、实时操作系统和中间设备之间的通用接口。

FatFs是一个通用的文件系统模块,用于在小型嵌入式系统中实现FAT文件系统。 FatFs 的编写遵循ANSI C,因此不依赖于硬件平台。

详细的内容大家可以自己去研究一下。

下面就简单的分析一下main.c函数。

static void ProcessButtonEvt(uint8_t uc_button);//按键处理函数

static void Button1_Handler(uint32_t id, uint32_t mask);//按键1 按键中断

static void Button2_Handler(uint32_t id, uint32_t mask); //按键2按键中断

static void Button3_Handler(uint32_t id, uint32_t mask); //按键3按键中断

static void SD_Detect_Handler(uint32_t id, uint32_t mask); //SD中断

static void configure_buttons(void);//机械按键初始化

static void configure_adc(void);//配置ADC 采集光线传感器

static void get_num_files_on_sd(void);//得到SD卡根目录下的文件总数

static void display_sd_info(void);//在OLED上显示SD卡的状态

static void display_sd_files(void);//显示SD卡的内容到OLED屏幕上

static void ssd1306_draw_graph(uint8_t col, uint8_t page, uint8_t width, uint8_t height, uint8_t *tab);//在OLED屏幕上显示图片

static void ssd1306_clear_char(void);//清空OLED屏幕

int main(void)

{

/*主要完成时钟、gpio、OLED、SD卡的初始化,和各个功能*/

}

具体内容参看程序,研究一下ASF提供的函数,开发起来会增加开发速度。

下面我们就来开发个小的实例,让OLED液晶屏幕输出HelloWorld!

首先将main.c函数的内容全部清空,我们一步一步来建立这个函数。

因为要在OLED屏上输出,所以要查看液晶屏的驱动函数。

详细的可以去项目文件中 ASF -》 common -》 components -》 display -》 ssd1306 中查看驱动文件。

#include

#include

intmain(void)

{

sysclk_init();// 初始化时钟

board_init();// 初始化GPIO

ssd1306_init();//初始化OLED液晶屏

ssd1306_clear();//清空OLED屏幕

/*显示helloWorld*/

ssd1306_set_page_address(0);//行

ssd1306_set_column_address(0);//列

ssd1306_write_text(“HelloWorld”);

/*显示我的论坛ID*/

ssd1306_set_page_address(3);

ssd1306_set_column_address(70);

ssd1306_write_text(“-- liunian__92”);

while(1);

}

上述代码即可完成输出HelloWorld。如图3-2所示

总结一下atmel Studio开发起来还是很好用的,外壳也是VS2010的。有些功能还是很方便的,

比如系统中有

ssd1306_set_page_address();

ssd1306_set_column_address();

_write_text“); 这三个函数,

当你只输入 ssd 的时候,就会在下面自动出现这个三个备选函数。这个自动补充功能还是蛮实用的。

atmel Studio 一些调试功能还是蛮好用的,更重要的是Help 帮助窗口,有对atmel公司所有芯片和开发板的介绍信息,如果是初次接触atmel公司芯片的芯片,确实应该好好看看help文档和他们的示例代码。但是,可能这个开发环境是为了兼容atmel公司所有的产品,所以会有很多的功能我们用不到,所以感觉整个开发环境就显得操作缓慢。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • sam4s
    +关注

    关注

    0

    文章

    2

    浏览量

    1562
收藏 人收藏

    评论

    相关推荐

    新手求助 Atmel SAM4S

    Atmel家的单片机我从来没接触过,以前用过STM32。因为最近要研究 Atmel SAM4S,但是网上基本找不到相关的中文讲义或者教程{:4_106:}。关于AVR的倒是铺天盖地的,所以想进来
    发表于 05-21 20:12

    ATMEL SAM-4S Xplained之RTC实时时钟程序

    ATMEL SAM-4S Xplained之RTC实时时钟程序
    发表于 01-24 17:12

    ATMEL-SAM4S-XPLAINED开发板测试完全攻略

    ATMEL-SAM4S-XPLAINED开发板测试完全攻略
    发表于 01-25 10:16

    SAM4S MDK头文件初步分析

    SAM4S MDK头文件初步分析
    发表于 01-25 10:30

    SAM4S-XPLAINED--KEIL开发环境搭建及LED闪灯测试(固件库版本)

    SAM4S-XPLAINED--KEIL开发环境搭建及LED闪灯测试(固件库版本)
    发表于 01-25 10:31

    菜鸟一步步入门SAM4S-XPLAINED--IAR开发环境

    菜鸟一步步入门SAM4S-XPLAINED--IAR开发环境
    发表于 01-25 10:55

    ATSAMR21-XPRO,SAM R21 Xplained Pro评估套件提供额外的外围设备以扩展电路板的功能

    ATSAMR21-XPRO,SAM R21 Xplained Pro评估套件是评估ATSAMR21G18A微控制器的硬件平台。该套件由Atmel Studio集成开发平台提供支持,可轻松访问
    发表于 09-30 06:25

    采用SAM4S如何参考设计的UART到以太网网关

    采用SAM4S参考设计的UART到以太网网关。该参考设计演示了基于ATSAM4S的UART到以太网网关。 UDP广播方案用于客户端查找以太网地址。流量控制支持平衡以太网和UART之间的传输速率。该参考设计使用ATSAM4S
    发表于 05-20 14:45

    基于AT97SC3205 SAM4S ARM微控制器的定制USB板

    友好的演示和评估软件。该驱动器包含演示源代码,用于重新加载演示代码的十六进制映像(如有必要)和Kit Schematics。还包括USB延长线。该套件可使用最新的SAM4S ARM固件进行更新(如果有)
    发表于 08-25 12:15

    记录写SAM4S的bootloader所踩的坑

    记录写SAM4S的bootloader所踩的坑
    发表于 01-24 07:16

    Atmel SAM D20 Xplained Pro_USER GUIDE

    引脚以及某些按钮和 LED;此外,还有多个扩展接口便于用户扩展。 由于 SAM D20 兼容二进制,因此可将代码轻松地从 SAM D20 Xplained
    发表于 11-19 13:45 0次下载

    Atmel SAM R21 Xplained Pro

    Atmel SAM R21 Xplained Pro 开发板实战演练
    发表于 07-08 15:08 28次下载

    Atmel SAM4L应用指南

    The Atmel SAM4L Xplained Pro evaluation kit is hardware platform to evaluate the ATSAM4LC4C
    发表于 09-12 17:52 10次下载

    Atmel SAM4S应用指南

      The Atmel SAM4S Xplained Pro evaluation kit is a hardware platform to evaluate the ATSAM4S
    发表于 09-12 18:47 16次下载

    关于Xplained Pro SAM4L入门套件的特点介绍

    Xplained Pro SAM4L入门套件
    的头像 发表于 07-10 10:36 2625次阅读