SAMG53-XPRO 由于初接触学习,一步一步记录下自己的过程,以方便与大家一起分享,希望大家能多拍砖,共同进展。 [体验篇一]ATSAMG53 Xplained Pro 开箱验货 [体验篇二] ATSAMG53 Xplained Pro 获取资料 http://blog.sina.com.cn/s/blog_7e7fa4c80101k5v9.html [体验篇三] ATSAMG53 Xplained Pro LED控制 http://blog.sina.com.cn/s/blog_7e7fa4c80101k6kw.html [体验篇四] ATSAMG53 Xplained Pro 分析LED控制 http://blog.sina.com.cn/s/blog_7e7fa4c80101k9ef.html
从上篇分析到 对于LED的操作以下这几函数即可满足功能 ioport_set_pin_dir(LED_0_PIN, IOPORT_DIR_OUTPUT); //设置为输出,默认为浮空 ioport_set_pin_level(LED_0_PIN, IOPORT_PIN_LEVEL_HIGH);//输出高电平 ioport_set_pin_level(LED_0_PIN, IOPORT_PIN_LEVEL_LOW);//输出低电平 gpio_toggle_pin(LED0_GPIO);// 电平返转 而ATSAMG53 Xplained Pro 板上还有一个按键 SW0 ,而对于这个按键读作的代码如下: ioport_set_pin_dir(BUTTON_0_PIN, IOPORT_DIR_INPUT); //设置为输入 ioport_set_pin_mode(BUTTON_0_PIN, IOPORT_MODE_PULLUP);//设置上拉电阻 ioport_get_pin_level(BUTTON_0_PIN); //读取端口即 //由于设置上拉电阻,即初始状态为高,当读取为低时,即为按键按下 if( ioport_get_pin_level(BUTTON_0_PIN)== SW0_ACTIVE) { .... 为按键按下 } 把原来的代码修改,按下去LED反转 代码如下: #include <board.h> #include <delay.h> #include <gpio.h> #define SW0_GPIO (PIO_PA2_IDX) int main(void) { sysclk_init(); board_init(); delay_init(sysclk_get_cpu_hz()); while (true) { if( gpio_pin_is_low(SW0_GPIO)) { gpio_toggle_pin(LED0_GPIO); delay_ms(500); } } } |
或者 #include <board.h> #include <delay.h> //#include <gpio.h> #include <ioport.h> int main(void) { sysclk_init(); board_init(); delay_init(sysclk_get_cpu_hz()); while (true) { if( ioport_get_pin_level(BUTTON_0_PIN) == BUTTON_0_ACTIVE) { ioport_toggle_pin_level(LED_0_PIN); delay_ms(500); } } } |
两个代码都是一样的效果,不同的是PIO的调用的代码不同 ioport_xxxx 对应着 ioport.h gpio_xxx 对应着 gpio.h -->sam_gpio.h gpio.h 的函数,分别如下: gpio_pin_is_low(io_id) gpio_pin_is_high(io_id) gpio_set_pin_high(io_id) gpio_set_pin_low(io_id) gpio_toggle_pin(io_id) gpio_configure_pin(io_id,io_flags) gpio_configure_group(port_id,port_mask,io_flags) gpio_set_pin_group_high(port_id,mask) gpio_set_pin_group_low(port_id,mask) gpio_toggle_pin_group(port_id,mask) io_id --> Pio indexes --> samg53n19.h PIO_PA0_IDX PIO_PB0_IDX 等等 port_id--> samg53n19.h --> PIOA PIOB 一个感觉,头晕眼花,怎么两个samg53n19.h 但内容即不一样,仔细,看一下路径 C:\Program Files\Atmel\Atmel Toolchain\ARM GCC\Native\4.7.1416\CMSIS_Atmel\Device\ATMEL\samg53\include\pio\samg53n19.h 工程文件夹\DELAY_EXAMPLE1\DELAY_EXAMPLE1\src\ASF\sam\utils\cmsis\samg\samg53\include\samg53n19.h 在[体验篇四] ATSAMG53 Xplained Pro 分析LED控制 中提到PIO的操作也这样的操作 static inline void ioport_disable_pin(ioport_pin_t pin); static inline void ioport_disable_port(ioport_port_t port,ioport_port_mask_t mask); static inline void ioport_enable_pin(ioport_pin_t pin); static inline void ioport_enable_port(ioport_port_t port,ioport_port_mask_t mask); static inline bool ioport_get_pin_level(ioport_pin_t pin); static inline ioport_port_mask_t ioport_get_port_level(ioport_pin_t port,ioport_port_mask_t mask); static inline void ioport_init(void); static inline ioport_port_mask_t ioport_pin_to_mask(ioport_pin_t pin); static inline ioport_port_t ioport_pin_to_port_id(ioport_pin_t pin); static inline void ioport_reset_pin_mode(ioport_pin_t pin); static inline void ioport_reset_port_mode(ioport_port_t port,ioport_port_mask_t mask); static inline void ioport_set_pin_dir(ioport_pin_t pin,enum ioport_direction dir); static inline void ioport_set_pin_level(ioport_pin_t pin, bool level); static inline void ioport_set_pin_mode(ioport_pin_t pin, ioport_mode_t mode); static inline void ioport_set_pin_sense_mode(ioport_pin_t pin,enum ioport_sense pin_sense); static inline void ioport_set_port_dir(ioport_port_t port,ioport_port_mask_t mask, enum ioport_direction dir); static inline void ioport_set_port_level(ioport_port_t port,ioport_port_mask_t mask, ioport_port_mask_t level); static inline void ioport_set_port_mode(ioport_port_t port,ioport_port_mask_t mask, ioport_mode_t mode); static inline void ioport_set_port_sense_mode(ioport_port_t port,ioport_port_mask_t mask,enum ioport_sense pin_sense); static inline void ioport_toggle_pin_level(ioport_pin_t pin); static inline void ioport_toggle_port_level(ioport_port_t port,ioport_port_mask_t mask); |
我都搞不清楚,为什么Atmel PIO 同样的功能上即写两套不同的代码,真的不明白。但我决定不管它,以后默认统一使用ioport_xxxx 对应着 ioport.h
============================================================================================== 可能转载的原因,有些图片打不开,如果有需要请移步以下地址,不想重新上传图片,时间有限不便之处请原谅!同时请大家多拍砖,可以到我博客去观看! http://blog.sina.com.cn/s/blog_7e7fa4c80101kbu1.html ============================================================================================== [体验篇一]ATSAMG53 Xplained Pro 开箱验货 [体验篇二] ATSAMG53 Xplained Pro 获取资料 http://blog.sina.com.cn/s/blog_7e7fa4c80101k5v9.html [体验篇三] ATSAMG53 Xplained Pro LED控制 http://blog.sina.com.cn/s/blog_7e7fa4c80101k6kw.html [体验篇四] ATSAMG53 Xplained Pro 分析LED控制 http://blog.sina.com.cn/s/blog_7e7fa4c80101k9ef.html
|