|
@@ -1,4 +1,4 @@
|
|
|
-// 引脚功能(普通gpio,pwm,复用等)相关接口
|
|
|
+// 寮曡剼鍔熻兘(鏅�€歡pio锛宲wm锛屽�鐢ㄧ瓑)鐩稿叧鎺ュ彛
|
|
|
|
|
|
|
|
|
#include "ls1c_public.h"
|
|
@@ -8,21 +8,21 @@
|
|
|
|
|
|
|
|
|
/*
|
|
|
- * 把指定pin设置为指定用途(普通gpio,非gpio)
|
|
|
- * @gpio gpio引脚编号
|
|
|
- * @purpose 用途
|
|
|
+ * 鎶婃寚瀹歱in璁剧疆涓烘寚瀹氱敤閫�(鏅�€歡pio锛岄潪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) // 寮曡剼鐢ㄤ綔鏅�€歡pio
|
|
|
{
|
|
|
reg_set_one_bit(gpio_cfgx, pin);
|
|
|
}
|
|
|
- else // 引脚用作其它功能(非gpio)
|
|
|
+ else // 寮曡剼鐢ㄤ綔鍏跺畠鍔熻兘(闈瀏pio)
|
|
|
{
|
|
|
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 绗琻澶嶇敤
|
|
|
*/
|
|
|
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;
|
|
|
- }
|
|
|
- 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;
|
|
|
- }
|
|
|
- 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 ;
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ return ;
|
|
|
}
|
|
|
|
|
|
- // 置1
|
|
|
+ // 缃�1
|
|
|
reg_set_one_bit(reg, pin);
|
|
|
|
|
|
return ;
|