4. 软件编写 本实验在官方sdk基础上添加 led.c 和 led.h 文件
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 mainrn"); printf("hello,worldrn"); led_init(); //trap_c(0x00); while (1) { printf("."); led0_toggle(); led1_toggle(); led2_toggle(); HAL_Delay(500); }} void Error_Handler(void){ while (1) { }} void assert_failed(uint8_t *file, uint32_t line){ printf("Wrong parameters value: file %s on line %drn", file, line);}
5. 程序编译下载 右击工程 -> 选择build
工程编译输出如下,没有错误或警告,表示编译成功。
打开 Upgrade_Tools_V1.4.8.exe,开始下载程序
6. 实验现象 三个 led 同时闪烁
下载软件串口成功接收到 helloworld 打印
7. 总结 官方的 sdk 代码,不要随便改动,可能带来意想不到得到 bug。
官方的 CDK 还是蛮好用的
由于产品不是很稳定,串口下载可能试好几次才成功
下载视频