2023-12-11 21:45:06 +08:00
|
|
|
|
/*********************************************************************************************************************
|
2024-01-05 09:13:10 +08:00
|
|
|
|
* CH32V307VCT6 Opensourec Library <EFBFBD><EFBFBD><EFBFBD><EFBFBD>CH32V307VCT6 <EFBFBD><EFBFBD>Դ<EFBFBD>⣩<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڹٷ<EFBFBD> SDK <EFBFBD>ӿڵĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* Copyright (c) 2022 SEEKFREE <EFBFBD><EFBFBD><EFBFBD>ɿƼ<EFBFBD>
|
|
|
|
|
|
*
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD> CH32V307VCT6 <EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*
|
|
|
|
|
|
* CH32V307VCT6 <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> GPL<EFBFBD><EFBFBD>GNU General Public License<EFBFBD><EFBFBD><EFBFBD><EFBFBD> GNU ͨ<EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* <EFBFBD><EFBFBD> GPL <EFBFBD>ĵ<EFBFBD> 3 <EFBFBD>棨<EFBFBD><EFBFBD> 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>/<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><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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><EFBFBD>ʺ<EFBFBD><EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
|
|
|
|
|
*
|
|
|
|
|
|
* <EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ<EFBFBD>յ<EFBFBD>һ<EFBFBD><EFBFBD> GPL <EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
|
|
|
|
|
*
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD> 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><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><EFBFBD><EFBFBD> libraries/doc <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <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><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>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> zf_driver_delay
|
|
|
|
|
|
* <EFBFBD><EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ɶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾
|
|
|
|
|
|
* <EFBFBD>汾<EFBFBD><EFBFBD>Ϣ <EFBFBD>鿴 libraries/doc <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> version <EFBFBD>ļ<EFBFBD> <EFBFBD>汾˵<EFBFBD><EFBFBD>
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MounRiver Studio V1.8.1
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨ CH32V307VCT6
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
|
|
|
|
|
*
|
|
|
|
|
|
* <EFBFBD>ļ<EFBFBD>¼
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ע
|
|
|
|
|
|
* 2022-09-15 <EFBFBD><EFBFBD> W first version
|
|
|
|
|
|
********************************************************************************************************************/
|
2023-12-11 21:45:06 +08:00
|
|
|
|
|
|
|
|
|
|
#include "ch32v30x.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "zf_common_clock.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "zf_driver_delay.h"
|
|
|
|
|
|
|
|
|
|
|
|
//-------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> ms <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>Ҫ<EFBFBD><D2AA>ʱ<EFBFBD><CAB1>ʱ<EFBFBD><CAB1> ms <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
|
|
|
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_ms(100);
|
|
|
|
|
|
// <20><>ע<EFBFBD><D7A2>Ϣ
|
|
|
|
|
|
//-------------------------------------------------------------------------------------------------------------------
|
2024-01-05 09:13:10 +08:00
|
|
|
|
void system_delay_ms(uint32 num)
|
2023-12-11 21:45:06 +08:00
|
|
|
|
{
|
2024-01-05 09:13:10 +08:00
|
|
|
|
// SysTick->SR &= ~(1 << 0);
|
2023-12-11 21:45:06 +08:00
|
|
|
|
|
2024-01-05 09:13:10 +08:00
|
|
|
|
// SysTick->CMP = (uint64_t)(system_clock / 8000) * num;
|
|
|
|
|
|
// SysTick->CTLR |= (1 << 4);
|
|
|
|
|
|
// SysTick->CTLR |= (1 << 5) | (1 << 0);
|
2023-12-11 21:45:06 +08:00
|
|
|
|
|
2024-01-05 09:13:10 +08:00
|
|
|
|
// while ((SysTick->SR & (1 << 0)) != (1 << 0))
|
|
|
|
|
|
// ;
|
2023-12-11 21:45:06 +08:00
|
|
|
|
|
2024-01-05 09:13:10 +08:00
|
|
|
|
// SysTick->CTLR &= ~(1 << 0);
|
|
|
|
|
|
while (num--) {
|
|
|
|
|
|
system_delay_us(1000);
|
|
|
|
|
|
}
|
2023-12-11 21:45:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//-------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> us <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>Ҫ<EFBFBD><D2AA>ʱ<EFBFBD><CAB1>ʱ<EFBFBD><CAB1> us <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
|
|
|
|
|
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_us(100);
|
|
|
|
|
|
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>߳<EFBFBD>һЩ
|
|
|
|
|
|
//-------------------------------------------------------------------------------------------------------------------
|
2024-01-05 09:13:10 +08:00
|
|
|
|
void system_delay_us(uint32 num)
|
2023-12-11 21:45:06 +08:00
|
|
|
|
{
|
2024-01-05 09:13:10 +08:00
|
|
|
|
// SysTick->SR &= ~(1 << 0);
|
2023-12-11 21:45:06 +08:00
|
|
|
|
|
2024-01-05 09:13:10 +08:00
|
|
|
|
// SysTick->CMP = (uint64_t)(system_clock/8000000) * num;
|
|
|
|
|
|
// SysTick->CTLR |= (1 << 4);
|
|
|
|
|
|
// SysTick->CTLR |= (1 << 5) | (1 << 0);
|
2023-12-11 21:45:06 +08:00
|
|
|
|
|
2024-01-05 09:13:10 +08:00
|
|
|
|
// while((SysTick->SR & (1 << 0)) != (1 << 0));
|
2023-12-11 21:45:06 +08:00
|
|
|
|
|
2024-01-05 09:13:10 +08:00
|
|
|
|
// SysTick->CTLR &= ~(1 << 0);
|
2023-12-11 21:45:06 +08:00
|
|
|
|
|
2024-01-05 09:13:10 +08:00
|
|
|
|
uint64_t time_start = SysTick->CNT;
|
|
|
|
|
|
uint64_t time_delta = (uint64_t)num * (uint64_t)(system_clock / 8000000);
|
2023-12-11 21:45:06 +08:00
|
|
|
|
|
2024-01-05 09:13:10 +08:00
|
|
|
|
while (time_delta > (SysTick->CNT - time_start)) {
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2023-12-11 21:45:06 +08:00
|
|
|
|
|
2024-01-05 15:55:17 +08:00
|
|
|
|
uint64_t system_get_tick(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
uint64_t time_temp = SysTick->CNT;
|
|
|
|
|
|
return (time_temp);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-01-05 09:13:10 +08:00
|
|
|
|
void system_delay_init(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
SysTick->CTLR |= 0x21;
|
|
|
|
|
|
}
|