初始化仓库

This commit is contained in:
2025-10-15 00:22:56 +08:00
commit a6ddc01c98
650 changed files with 438085 additions and 0 deletions

View File

@@ -0,0 +1,195 @@
/*********************************************************************************************************************
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
*
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
*
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_driver_gpio
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.10.2
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
********************************************************************************************************************/
#include "zf_driver_gpio.h"
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡGPIO<49><4F><EFBFBD><EFBFBD>ַ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> pin ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> zf_driver_gpio.h <20><>gpio_pin_enumö<6D><C3B6>ֵȷ<D6B5><C8B7>)
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> get_port(P00_0)
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ù<EFBFBD>ע Ҳ<><D2B2><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
Ifx_P* get_port (gpio_pin_enum pin)
{
volatile Ifx_P *port;
switch(pin&0xffe0)
{
case P00_0: port = &MODULE_P00; break;
case P02_0: port = &MODULE_P02; break;
case P10_0: port = &MODULE_P10; break;
case P11_0: port = &MODULE_P11; break;
case P13_0: port = &MODULE_P13; break;
case P14_0: port = &MODULE_P14; break;
case P15_0: port = &MODULE_P15; break;
case P20_0: port = &MODULE_P20; break;
case P21_0: port = &MODULE_P21; break;
case P22_0: port = &MODULE_P22; break;
case P23_0: port = &MODULE_P23; break;
case P32_0: port = &MODULE_P32; break;
case P33_0: port = &MODULE_P33; break;
default:break;
}
#pragma warning 507
return port;
#pragma warning default
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gpio <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> pin ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> zf_driver_gpio.h <20><> gpio_pin_enum ö<><C3B6>ֵȷ<D6B5><C8B7>)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dat 0<><30><EFBFBD>͵<EFBFBD>ƽ 1<><31><EFBFBD>ߵ<EFBFBD>ƽ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> gpio_set_level(P00_0, 1);// P00_0 <20><><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void gpio_set_level (gpio_pin_enum pin, uint8 dat)
{
if(dat)
{
IfxPort_setPinHigh(get_port(pin), pin&0x1f);
}
else
{
IfxPort_setPinLow(get_port(pin), pin&0x1f);
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gpio <20><>ƽ<EFBFBD><C6BD>ȡ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> pin ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> zf_driver_gpio.h <20><> gpio_pin_enum ö<><C3B6>ֵȷ<D6B5><C8B7>)
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><><EFBFBD>ŵ<EFBFBD>ǰ<EFBFBD><C7B0>ƽ
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint8 status = gpio_get_level(P00_0);// <20><>ȡP00_0<5F><30><EFBFBD>ŵ<EFBFBD>ƽ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint8 gpio_get_level (gpio_pin_enum pin)
{
return IfxPort_getPinState(get_port(pin), pin&0x1f);
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gpio <20><>ת<EFBFBD><D7AA>ƽ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> pin ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> zf_driver_gpio.h <20><> gpio_pin_enum ö<><C3B6>ֵȷ<D6B5><C8B7>)
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> gpio_toggle_level(P00_0);// P00_0<5F><30><EFBFBD>ŵ<EFBFBD>ƽ<EFBFBD><C6BD>ת
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void gpio_toggle_level (gpio_pin_enum pin)
{
IfxPort_togglePin(get_port(pin), pin&0x1f);
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gpio <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> pin ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> zf_driver_gpio.h <20><> gpio_pin_enum ö<><C3B6>ֵȷ<D6B5><C8B7>)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dir <20><><EFBFBD>ŵķ<C5B5><C4B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPO <20><><EFBFBD>룺GPI
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> mode <20><><EFBFBD>ŵ<EFBFBD>ģʽ (<28><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> zf_driver_gpio.h <20><> gpio_mode_enum ö<><C3B6>ֵȷ<D6B5><C8B7>)
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> gpio_dir(P00_0, GPO, GPO_PUSH_PULL);// <20><><EFBFBD><EFBFBD>P00_0Ϊ<30><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void gpio_set_dir (gpio_pin_enum pin, gpio_dir_enum dir, gpio_mode_enum pinmode)
{
IfxPort_Mode port_mode;
if(dir == GPI)
{
switch(pinmode)
{
case GPI_FLOATING_IN:port_mode = IfxPort_Mode_inputNoPullDevice ; break; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case GPI_PULL_DOWN :port_mode = IfxPort_Mode_inputPullDown ; break; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
default: port_mode = IfxPort_Mode_inputPullUp ; break; // Ĭ<><C4AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
else
{
switch(pinmode)
{
case GPO_OPEN_DTAIN :port_mode = IfxPort_Mode_outputOpenDrainGeneral; break;// <20><>©<EFBFBD><C2A9><EFBFBD><EFBFBD>
default: port_mode = IfxPort_Mode_outputPushPullGeneral ; break;// Ĭ<><C4AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
IfxPort_setPinMode(get_port(pin), pin&0x1f, port_mode);
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> gpio <20><>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> pin ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> zf_driver_gpio.h <20><> gpio_pin_enum ö<><C3B6>ֵȷ<D6B5><C8B7>)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> mode <20><><EFBFBD>ŵķ<C5B5><C4B7><EFBFBD> [GPI/GPIO]
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dat <20><><EFBFBD>ų<EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD>õĵ<C3B5>ƽ״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ч 0<><30><EFBFBD>͵<EFBFBD>ƽ 1<><31><EFBFBD>ߵ<EFBFBD>ƽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ģʽʱ<CABD><CAB1>Ч
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> mode <20><><EFBFBD>ŵ<EFBFBD>ģʽ (<28><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> zf_driver_gpio.h <20><> gpio_mode_enum ö<><C3B6>ֵȷ<D6B5><C8B7>)
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> gpio_init(P00_0, GPO, 1, GPO_PUSH_PULL); // P00_0<5F><30>ʼ<EFBFBD><CABC>ΪGPIO<49><4F><EFBFBD>ܡ<EFBFBD><DCA1><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ <20><>Ҫ<EFBFBD>ر<EFBFBD>ע<EFBFBD><D7A2>P20_2<5F>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void gpio_init (gpio_pin_enum pin, gpio_dir_enum dir, uint8 dat, gpio_mode_enum pinmode)
{
IfxPort_Mode port_mode;
if(dir == GPI)
{
switch(pinmode)
{
case GPI_FLOATING_IN:port_mode = IfxPort_Mode_inputNoPullDevice ; break; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case GPI_PULL_DOWN :port_mode = IfxPort_Mode_inputPullDown ; break; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
default: port_mode = IfxPort_Mode_inputPullUp ; break; // Ĭ<><C4AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
else
{
switch(pinmode)
{
case GPO_OPEN_DTAIN :port_mode = IfxPort_Mode_outputOpenDrainGeneral; break;// <20><>©<EFBFBD><C2A9><EFBFBD><EFBFBD>
default: port_mode = IfxPort_Mode_outputPushPullGeneral ; break;// Ĭ<><C4AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
IfxPort_setPinMode(get_port(pin), pin&0x1f, port_mode);
IfxPort_setPinPadDriver(get_port(pin), pin&0x1f, IfxPort_PadDriver_cmosAutomotiveSpeed1);
if(dir == GPO)
{
if(dat)
{
IfxPort_setPinHigh(get_port(pin), pin&0x1f);
}
else
{
IfxPort_setPinLow(get_port(pin), pin&0x1f);
}
}
}