diff options
| author | zhuangwei123 <[email protected]> | 2018-05-12 19:33:32 +0800 |
|---|---|---|
| committer | zhuangwei123 <[email protected]> | 2018-05-12 19:33:32 +0800 |
| commit | 9a7caed323b8f111b5e9ad7e22462a12516ae1d6 (patch) | |
| tree | 92ef6e351a5482af2fb3715cd7e451079eeef019 /bsp/ls1cdev/libraries | |
| parent | ce6a9183162bee63e1912a3c4ebccf3c834dbacf (diff) | |
[bsp/ls1cdev]添加自引导特性,添加配置选项
1、添加自引导特性,添加配置选项
2、修复cpuport.c的bug
3、修复ls1c_pin.c不能默认复用的bug
Diffstat (limited to 'bsp/ls1cdev/libraries')
| -rw-r--r-- | bsp/ls1cdev/libraries/ls1c_pin.c | 198 |
1 files changed, 100 insertions, 98 deletions
diff --git a/bsp/ls1cdev/libraries/ls1c_pin.c b/bsp/ls1cdev/libraries/ls1c_pin.c index 15b4157b15..81f56c0b0c 100644 --- a/bsp/ls1cdev/libraries/ls1c_pin.c +++ b/bsp/ls1cdev/libraries/ls1c_pin.c @@ -1,4 +1,4 @@ -// ���Ź���(��ͨgpio��pwm�����õ�)��ؽӿ� +// 引脚功能(普通gpio,pwm,复用等)相关接口 #include "ls1c_public.h" @@ -8,21 +8,21 @@ /* - * ��ָ��pin����Ϊָ����;(��ͨgpio����gpio) - * @gpio gpio���ű�� - * @purpose ��; + * 把指定pin设置为指定用途(普通gpio,非gpio) + * @gpio gpio引脚编号 + * @purpose 用途 */ void pin_set_purpose(unsigned int gpio, pin_purpose_t purpose) { - volatile unsigned int *gpio_cfgx; // GPIO_CFGx�Ĵ��� + volatile unsigned int *gpio_cfgx; // GPIO_CFGx寄存器 unsigned int pin = GPIO_GET_PIN(gpio); gpio_cfgx = gpio_get_cfg_reg(gpio); - if (PIN_PURPOSE_GPIO == purpose) // ����������ͨgpio + if (PIN_PURPOSE_GPIO == purpose) // 引脚用作普通gpio { reg_set_one_bit(gpio_cfgx, pin); } - else // ����������������(��gpio) + else // 引脚用作其它功能(非gpio) { reg_clr_one_bit(gpio_cfgx, pin); } @@ -33,116 +33,118 @@ void pin_set_purpose(unsigned int gpio, pin_purpose_t purpose) /* - * ����ָ��pinΪ��n���� - * @gpio gpio��� - * @remap ��n���� + * 设置指定pin为第n复用 + * @gpio gpio编号 + * @remap 第n复用 */ void pin_set_remap(unsigned int gpio, pin_remap_t remap) { - volatile unsigned int *reg = NULL; // ���üĴ��� + volatile unsigned int *reg = NULL; // 复用寄存器 unsigned int port = GPIO_GET_PORT(gpio); unsigned int pin = GPIO_GET_PIN(gpio); - int i; + int i; - /*ָ��ȫ��pin����Ϊ0*/ - for(i =0; i <=4; i++) - { - reg = (volatile unsigned int *)((LS1C_CBUS_FIRST0)+((port)*0x04)+((i)*0x10)); - // ��0 - reg_clr_one_bit(reg, pin); - } + /*指定全部pin复用为0*/ + for (i = 0; i <= 4; i++) + { + reg = (volatile unsigned int *)((LS1C_CBUS_FIRST0) + ((port) * 0x04) + ((i) * 0x10)); + // 置0 + reg_clr_one_bit(reg, pin); + } + + if (remap == PIN_REMAP_DEFAULT) return; switch (port) { - case 0: - switch (remap) - { - case PIN_REMAP_FIRST: - reg = (volatile unsigned int *)LS1C_CBUS_FIRST0; - break; - case PIN_REMAP_SECOND: - reg = (volatile unsigned int *)LS1C_CBUS_SECOND0; - break; - case PIN_REMAP_THIRD: - reg = (volatile unsigned int *)LS1C_CBUS_THIRD0; - break; - case PIN_REMAP_FOURTH: - reg = (volatile unsigned int *)LS1C_CBUS_FOURTH0; - break; - case PIN_REMAP_FIFTH: - reg = (volatile unsigned int *)LS1C_CBUS_FIFTH0; - break; - } + case 0: + switch (remap) + { + case PIN_REMAP_FIRST: + reg = (volatile unsigned int *)LS1C_CBUS_FIRST0; + break; + case PIN_REMAP_SECOND: + reg = (volatile unsigned int *)LS1C_CBUS_SECOND0; + break; + case PIN_REMAP_THIRD: + reg = (volatile unsigned int *)LS1C_CBUS_THIRD0; break; + case PIN_REMAP_FOURTH: + reg = (volatile unsigned int *)LS1C_CBUS_FOURTH0; + break; + case PIN_REMAP_FIFTH: + reg = (volatile unsigned int *)LS1C_CBUS_FIFTH0; + break; + } + break; - case 1: - switch (remap) - { - case PIN_REMAP_FIRST: - reg = (volatile unsigned int *)LS1C_CBUS_FIRST1; - break; - case PIN_REMAP_SECOND: - reg = (volatile unsigned int *)LS1C_CBUS_SECOND1; - break; - case PIN_REMAP_THIRD: - reg = (volatile unsigned int *)LS1C_CBUS_THIRD1; - break; - case PIN_REMAP_FOURTH: - reg = (volatile unsigned int *)LS1C_CBUS_FOURTH1; - break; - case PIN_REMAP_FIFTH: - reg = (volatile unsigned int *)LS1C_CBUS_FIFTH1; - break; - } + case 1: + switch (remap) + { + case PIN_REMAP_FIRST: + reg = (volatile unsigned int *)LS1C_CBUS_FIRST1; + break; + case PIN_REMAP_SECOND: + reg = (volatile unsigned int *)LS1C_CBUS_SECOND1; + break; + case PIN_REMAP_THIRD: + reg = (volatile unsigned int *)LS1C_CBUS_THIRD1; + break; + case PIN_REMAP_FOURTH: + reg = (volatile unsigned int *)LS1C_CBUS_FOURTH1; break; + case PIN_REMAP_FIFTH: + reg = (volatile unsigned int *)LS1C_CBUS_FIFTH1; + break; + } + break; - case 2: - switch (remap) - { - case PIN_REMAP_FIRST: - reg = (volatile unsigned int *)LS1C_CBUS_FIRST2; - break; - case PIN_REMAP_SECOND: - reg = (volatile unsigned int *)LS1C_CBUS_SECOND2; - break; - case PIN_REMAP_THIRD: - reg = (volatile unsigned int *)LS1C_CBUS_THIRD2; - break; - case PIN_REMAP_FOURTH: - reg = (volatile unsigned int *)LS1C_CBUS_FOURTH2; - break; - case PIN_REMAP_FIFTH: - reg = (volatile unsigned int *)LS1C_CBUS_FIFTH2; - break; - } + case 2: + switch (remap) + { + case PIN_REMAP_FIRST: + reg = (volatile unsigned int *)LS1C_CBUS_FIRST2; + break; + case PIN_REMAP_SECOND: + reg = (volatile unsigned int *)LS1C_CBUS_SECOND2; + break; + case PIN_REMAP_THIRD: + reg = (volatile unsigned int *)LS1C_CBUS_THIRD2; + break; + case PIN_REMAP_FOURTH: + reg = (volatile unsigned int *)LS1C_CBUS_FOURTH2; + break; + case PIN_REMAP_FIFTH: + reg = (volatile unsigned int *)LS1C_CBUS_FIFTH2; break; + } + break; - case 3: - switch (remap) - { - case PIN_REMAP_FIRST: - reg = (volatile unsigned int *)LS1C_CBUS_FIRST3; - break; - case PIN_REMAP_SECOND: - reg = (volatile unsigned int *)LS1C_CBUS_SECOND3; - break; - case PIN_REMAP_THIRD: - reg = (volatile unsigned int *)LS1C_CBUS_THIRD3; - break; - case PIN_REMAP_FOURTH: - reg = (volatile unsigned int *)LS1C_CBUS_FOURTH3; - break; - case PIN_REMAP_FIFTH: - reg = (volatile unsigned int *)LS1C_CBUS_FIFTH3; - break; - } + case 3: + switch (remap) + { + case PIN_REMAP_FIRST: + reg = (volatile unsigned int *)LS1C_CBUS_FIRST3; + break; + case PIN_REMAP_SECOND: + reg = (volatile unsigned int *)LS1C_CBUS_SECOND3; + break; + case PIN_REMAP_THIRD: + reg = (volatile unsigned int *)LS1C_CBUS_THIRD3; + break; + case PIN_REMAP_FOURTH: + reg = (volatile unsigned int *)LS1C_CBUS_FOURTH3; + break; + case PIN_REMAP_FIFTH: + reg = (volatile unsigned int *)LS1C_CBUS_FIFTH3; break; + } + break; - default: - return ; + default: + return ; } - // ��1 + // 置1 reg_set_one_bit(reg, pin); return ; |
