单片机:STM32F407
开发板:DMF407电机开发板
平台:keil V5.31
HSE 为8MHZ
HSI为16MHZ
主函数:
int main(void)
{
HAL_Init(); /* 初始化HAL库 */
sys_stm32_clock_init(336, 8, 2, 7); /* 设置时钟,168Mhz */
delay_init(168); /* 延时初始化 */
usart_init(115200); /* 串口初始化为115200 */
usmart_dev.init(84); /* USMART初始化 */
led_init(); /* 初始化LED */
lcd_init(); /* 初始化LCD */
lcd_show_string(30, 50, 200, 16, 16, "STM32", RED);
lcd_show_string(30, 70, 200, 16, 16, "USMART TEST", RED);
lcd_show_string(30, 90, 200, 16, 16, "ATOM@ALIENTEK", RED);
while (1)
{
LED0_TOGGLE(); /*红灯闪烁*/
delay_ms(1000);
}
}
配置:
/* 函数名列表初始化(用户自己添加)
* 用户直接在这里输入要执行的函数名及其查找串
*/
struct _m_usmart_nametab usmart_nametab[] =
{
#if USMART_USE_WRFUNS == 1 /* 如果使能了读写操作 */
(void *)read_addr, "uint32_t read_addr(uint32_t addr)",
(void *)write_addr, "void write_addr(uint32_t addr,uint32_t val)",
#endif
(void *)delay_ms, "void delay_ms(uint16_t nms)",
(void *)delay_us, "void delay_us(uint32_t nus)",
(void *)lcd_clear, "void lcd_clear(uint16_t color)",
(void *)lcd_fill, "void lcd_fill(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_t color)",
(void *)lcd_draw_line, "void lcd_draw_line(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color)",
(void *)lcd_draw_circle, "void lcd_draw_circle(uint16_t x0, uint16_t y0, uint8_t r, uint16_t color)",
(void *)lcd_draw_rectangle, "void lcd_draw_rectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color)",
(void *)lcd_show_num, "void lcd_show_num(uint16_t x, uint16_t y, uint32_t num, uint8_t len, uint8_t size, uint16_t color)",
(void *)lcd_show_xnum, "void lcd_show_xnum(uint16_t x, uint16_t y, uint32_t num, uint8_t len, uint8_t size, uint8_t mode, uint16_t color)",
(void *)lcd_show_string, "void lcd_show_string(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint8_t size, char *p, uint16_t color)",
(void *)lcd_draw_point, "void lcd_draw_point(uint16_t x, uint16_t y, uint16_t color)",
(void *)lcd_read_point, "uint16_t lcd_read_point(uint16_t x, uint16_t y)",
(void *)lcd_display_dir, "void lcd_display_dir(uint8_t dir)",
(void *)led_set, "void led_set(uint8_t sta)",
(void *)test_fun, "void test_fun(void(*ledset)(uint8_t), uint8_t sta)",
};
通过USB线连接PC和USART,通过sscom测试。
烧录后上电:


串口输入?(哟勾选"加回车换行")

发送:list

发送:id

发送:hex 123

发送:dec 0x123

发送:runtime 1

发送:lcd_clear(123456)


发送:delay_ms(1000)

发送:lcd_clear(0xff)

发送:lcd_clear(0xf800)

发送:lcd_draw_circle(100, 100, 80, 0xff)

通过串口调试,确实方便了很多,减少下载次数。