历史上的今天
今天是:2025年05月18日(星期日)
2018年05月18日 | AVR读写IO口右一方法(借用ATmel)
2018-05-18 来源:eefocus
//头文件
#ifndef __always_inline__
#define __always_inline__ _Pragma("inline=forced")inline
#endif
#define AVR_GPIO_ASSIGN(name, port, bit) \
__always_inline__ static void GPIO_##name##_Set(void) {PORT##port |= (1 << bit);}\
__always_inline__ static void GPIO_##name##_Clr(void) {PORT##port &= ~(1 << bit);}\
__always_inline__ static void GPIO_##name##_Toggle(void) {PORT##port ^= (1 << bit);}\
__always_inline__ static uint8 GPIO_##name##_Read(void) {return (PIN##port & (1 << bit)) !=0;}\
__always_inline__ static uint8 GPIO_##name##_DdrRead(void) {return (DDR##port & (1 << bit)) !=0;}\
__always_inline__ static void GPIO_##name##_MakeOut(uint8 x) {(x)?(PORT##port |= (1 << bit)):(PORT##port &= ~(1 << bit)); DDR##port |= (1 << bit);}\
__always_inline__ static void GPIO_##name##_MakeIn(uint8 x) {DDR##port &= ~(1 << bit); (x)?(PORT##port |= (1 << bit)):(PORT##port &= ~(1 << bit));}\
__always_inline__ static void GPIO_##name##_MakePullup(void) {GPIO_##name##_MakeIn(1);}
AVR_GPIO_ASSIGN(LED_1,B,0); //LED_1-------PORTB0
AVR_GPIO_ASSIGN(LED_2,B,1); //LED_2-------PORTB1
AVR_GPIO_ASSIGN(KEY,B,2); //KEY---------PORTB2
//C文件
volatile uint8 key;
int main()
{
GPIO_LED_1_MakeOut(0); //LED_1设为输出,初始输出低
GPIO_LED_2_MakeOut(0); //LED_2设为输出,初始输出低
GPIO_KEY_MakeIn(1); //KEY设为输入,初始上拉
GPIO_LED_1_Set(); //LED_1输出高
GPIO_LED_1_Clr(); //LED_1输出低
GPIO_LED_2_Set(); //LED_2输出高
GPIO_LED_2_Clr(); //LED_2输出低
key=GPIO_KEY_Read(); //读取KEY
while(1);
}
史海拾趣
|
RT,应用和驱动间数据传输可以通过readfile,writefile实现,但是现在想通过内存共享的方式传递大量数据,不知道应用和内存的共享内存可不可以实现?或者有没有更好的应用和驱动间的传输数据的方法?请大家多多指导… 查看全部问答> |
|
请教:WinCE5.0开机密码输入X次后强制关闭系统 俺现在实现设置了开机密码重启后出现开机密码提示,但是开机密码界面显示不完全,但是软键盘可以自动弹出(经过对startui.cpp的修改),可以直接输入密码即可进入系统! 现想添加WinCE ...… 查看全部问答> |
|
我在主窗口的初始化中注册了子窗口类WNDDISPLAY, 并且注册成功,然而在主窗口的WM_CREATE处理函数中调用hwndChild = CreateWindowEx (WS_EX_CLIENTEDGE, WNDDISPLAY, TEXT(\"\"), WS_CHILD, ...… 查看全部问答> |
|
C语言,不能用强制转换,想将结构体内所有元素转化为unsigned short int型元素 typedef struct userinfo { char[10] username; //用户姓名 long user_serial; //用户标示号 float user_fee; //用户消费额,两位小数 } a; 1. 一 ...… 查看全部问答> |
|
请问有没有哪位抢到了 Sitara AM335x ARM Cortex-A8 套件但现在不需要的,要是愿意的话转让给我呗。论坛下一波团购似乎也没消息了。 如果不能搞到这个就只好买ARM11的板子了。 谢谢。… 查看全部问答> |




