|
【GD32F350分享】【二】LED跑马灯和串口使用
[复制链接]
搭建好开发环境后,首先把板子现有的LED驱动起来,同时把串口调通,便于打印调试信息,因为在提供的例程中包含了这部分代码的使用,稍做修改和整理就可以了。
在工程目录中的Driver文件夹中分别添加led和usart1的源文件和头文件,并添加至Keil工程中。
编写LED端口初始化:
- void LED_Init(void)
- {
- rcu_periph_clock_enable(RCU_GPIOB);
- gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,
- GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10);
- gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_2MHZ,
- GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10);
-
- LED4_OFF();
- LED5_OFF();
- LED6_OFF();
- }
复制代码
- #define LED5_ON() gpio_bit_set(GPIOB, GPIO_PIN_8)
- #define LED5_OFF() gpio_bit_reset(GPIOB, GPIO_PIN_8)
- #define LED6_ON() gpio_bit_set(GPIOB, GPIO_PIN_9)
- #define LED6_OFF() gpio_bit_reset(GPIOB, GPIO_PIN_9)
- #define LED4_ON() gpio_bit_set(GPIOB, GPIO_PIN_10)
- #define LED4_OFF() gpio_bit_reset(GPIOB, GPIO_PIN_10)
复制代码
在usrat1源文件中初始化串口1,也就是接在调试上的串口,并将串口重定向为printf打印调试信息。
- /**
- * [url=home.php?mod=space&uid=159083]@brief[/url] USART1初始化
- **/
- void USART1_Init(void)
- {
- /* enable COM GPIO clock */
- rcu_periph_clock_enable(RCU_GPIOA);
- /* enable USART clock */
- rcu_periph_clock_enable(RCU_USART1);
- /* connect port to USARTx_Tx */
- gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_2);
- /* connect port to USARTx_Rx */
- gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_3);
- /* configure USART Tx as alternate function push-pull */
- gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_2);
- gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_2);
- /* configure USART Rx as alternate function push-pull */
- gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_3);
- gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_3);
- /* USART configure */
- usart_deinit(USART1);
- usart_baudrate_set(USART1, 115200U);
- usart_receive_config(USART1, USART_RECEIVE_ENABLE);
- usart_transmit_config(USART1, USART_TRANSMIT_ENABLE);
- usart_enable(USART1);
- }
- /* retarget the C library printf function to the USART */
- int fputc(int ch, FILE *f)
- {
- usart_data_transmit(USART1, (uint8_t)ch);
- while(RESET == usart_flag_get(USART1, USART_FLAG_TBE));
- return ch;
- }
复制代码
在主函数中编写流水灯程序,和调试打印信息就可以了。
|
|