1.开发环境
程序开发平台:CDK
程序下载软件:Upgrade_Tools_V1.4.8.exe
驱动:ch340 usb转串口驱动
2.代码
2.原理图
led0 —> PB0
led1 —> PB1
led2 —> PB2
led.c
#include "led.h"
#include "wm_hal.h"
void led_init(void)
{
GPIO_InitTypeDef gpio_init_struct;
gpio_init_struct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2;
gpio_init_struct.Mode = GPIO_MODE_OUTPUT;
gpio_init_struct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &gpio_init_struct);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2, GPIO_PIN_SET);
}
led.h
//led.h
#ifndef _LED_H
#define _LED_H
#define led0_on() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET)
#define led0_off() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET)
#define led0_toggle() HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
#define led1_on() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET)
#define led1_off() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET)
#define led1_toggle() HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1);
#define led2_on() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET)
#define led2_off() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET)
#define led2_toggle() HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_2);
void led_init(void);
#endif
修改main.c
#include
#include "wm_hal.h"
#include "led.h"
//#include "csi_config.h"
void Error_Handler(void);
void led_init(void);
int main(void)
{
SystemClock_Config(CPU_CLK_240M);
printf("enter main\r\n");
printf("hello,world\r\n");
led_init();
//trap_c(0x00);
while (1)
{
printf(".");
led0_toggle();
led1_toggle();
led2_toggle();
// HAL_Delay(500); 不知道为啥不起作用
int i = 600;
while (i--){
printf(i);
};
}
}
void Error_Handler(void)
{
while (1)
{
}
}
void assert_failed(uint8_t *file, uint32_t line)
{
printf("Wrong parameters value: file %s on line %d\r\n", file, line);
}
驱动:ch340 usb转串口驱动
相关开发平台搭建及安装,论坛很多啦,这里就不再赘述了。
2. 实验目的
3. 硬件平台
联盛德W806-KIT
如图,飞线是为了实现串口一键下载,不用手动复位了。
查看板子原理图,led对应引脚情况如下:
5. 程序编译下载
右击工程 -> 选择build
工程编译输出如下,没有错误或警告,表示编译成功。
打开 Upgrade_Tools_V1.4.8.exe,开始下载程序
6. 实验现象
三个 led 同时闪烁
下载软件串口成功接收到 helloworld 打印
7. 总结
官方的 sdk 代码,不要随便改动,可能带来意想不到得到 bug。
官方的 CDK 还是蛮好用的