手上有个电机调速的需求,打算用联盛德的W806做,边做边写吧。
如果没做出来,那我就把这篇删掉。
板子昨天到了。由于没有固件函数库,只能看着GPIO库和官方的demo边试边学。这里改了一个流水灯,后面试试PWM调试。
#include <stdio.h>
#include "wm_hal.h"
#include "wm_gpio.h"
void Error_Handler(void);
static void GPIO_Init(void);
static volatile uint8_t key_flag = 1;
int main(void)
{
SystemClock_Config(CPU_CLK_160M);
printf("enter main\r\n");
HAL_Init();
GPIO_Init();
while (1)
{
HAL_Delay(200);
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0 );
HAL_Delay(200);
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1 );
HAL_Delay(200);
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_2);
}
return 0;
}
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);
}
static void GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIO_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2, GPIO_PIN_SET);
GPIO_InitStruct.Pin = GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_NVIC_SetPriority(GPIOB_IRQn, 0);
HAL_NVIC_EnableIRQ(GPIOB_IRQn);
}
反正现在越看越觉得C怎么这么难?