要进行程序设计和测试,就离不开程序的下载功能。此次CH32V208所配置的外挂是调试器不如CH32V307所板载的调试器那样好使。
为了解决程序下载的问题,索性就抛开调试器直接用串口来下载,其线路连接如图1所示。
图1 下载线路
如何使用软件WCHISPTool来进行下载,在先按下复位键和下载键,如何再予以释放,下载前需先解除保护,在选取好下载的目标文件后,点击“下载”即可,详见图2所示。
图2 程序下载
在开发板上配有2个LED,其电路见图3所示,为了用PA0来控制LED1,在测试前需用导线将二者连接好。
图3 LED电路
配置PA0引脚为输出功能的配置函数为:
void GPIO_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStructure = {0};
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
实现LED灯闪烁效果的主程序为:
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
GPIO_INIT();
while(1)
{
Delay_Ms(250);
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);
Delay_Ms(250);
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);
}
}
经下载测试,其符合设计要求。
在开发板上还配有1个用户键,其电路见图4所示。为了用PA1来读取KEY的状态,需用导线将二者连接起来。
图4 LED电路
配置PA0为输出功能,PA1为输入功能的配置函数为:
void GPIO_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStructure = {0};
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode =
GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
这里由于按键KEY并没有提供上拉电阻,故在配置时将其配置为上拉模式。
以KEY控制LED灯的主程序为:
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
GPIO_INIT();
while(1)
{
if(GPIO_ReadInputDataBit(GPIOA,
GPIO_Pin_1)==0)
{
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);
}
else {
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);
}
}
}
经程序的下载测试,其控制效果如图5所示,说明其符合设计要求。
图5 控制效果
这样就具备了程序设计的基本能力,也为后续的开发打下的坚实的基础。
更多回帖