summaryrefslogtreecommitdiff
path: root/bsp/ls1cdev/libraries
diff options
context:
space:
mode:
authorzhuangwei123 <[email protected]>2018-05-12 19:33:32 +0800
committerzhuangwei123 <[email protected]>2018-05-12 19:33:32 +0800
commit9a7caed323b8f111b5e9ad7e22462a12516ae1d6 (patch)
tree92ef6e351a5482af2fb3715cd7e451079eeef019 /bsp/ls1cdev/libraries
parentce6a9183162bee63e1912a3c4ebccf3c834dbacf (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.c198
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 ;