使用platformio平台的libopencm3开发框架来开发stm32g0,以下为串口中断的使用。
1 新建项目建立uart项目在pio的home页面新建项目,项目名称uart,选择开发板为上一次建立的自定义开发板型号 monkeypi_stm32_g070rb,开发框架选择libopencm3;
项目建立完成后在src目录下新建main.c主程序文件;修改下载和调试方式,这里开发板使用的是daplink仿真器,因此修改platformio.ini文件如下:1upload_protocol = cmsis-dap2debug_tool = cmsis-dap2 编写程序时钟设置1//system clock2rcc_clock_setup(&rcc_clock_config[rcc_clock_config_hsi_pll_64mhz]);34//uart pin5rcc_periph_clock_enable(rcc_usart1);6rcc_periph_clock_enable(rcc_gpiob);先设置系统时钟为内部pll生成64mhz,然后设置串口外设和串口引脚外设的时钟;
引脚复用功能设置1gpio_mode_setup(gpiob,gpio_mode_af,gpio_pupd_none,gpio6|gpio7);2gpio_set_af(gpiob,gpio_af0,gpio6|gpio7);根据芯片datasheet文档,使用usart1其引脚为pa9\\pa10,复用功能af1为串口功能;
串口设置1usart_set_baudrate(usart1,115200); 2usart_set_databits(usart1,8); 3usart_set_stopbits(usart1,usart_stopbits_1); 4usart_set_parity(usart1,usart_parity_none); 5usart_set_flow_control(usart1,usart_flowcontrol_none); 6usart_set_mode(usart1,usart_mode_tx_rx); 7 8//uart isr 9nvic_enable_irq(nvic_usart1_irq);1011usart_enable(usart1);1213usart_enable_rx_interrupt(usart1);先设置串口波特率、数据位数、停止位、校验、流控等设置,再开启串口中断,使能串口和其接收中断;
串口发送1char buff[32] = hello, makerinchina.cn\\n;2for(int i=0; i
串口接收1/** 2 * @brief uart1 isr function 3 * 4 */ 5void usart1_isr(void) 6{ 7 //receive interrupt 8 if (((usart_cr1(usart1) & usart_cr1_rxneie) != 0) && 9 ((usart_isr(usart1) & usart_isr_rxne) != 0)) {1011 if(recv_index < buff_size){12 recv_buff[recv_index++] = usart_recv(usart1);13 }else{14 recv_index = 0;15 }16 }17}串口接收使用中断方式,接收到数据后将其存放的buff中,然后主程序中取出打印显示出来:
1#include 2#include 3#include 4#include 5 6#include 7 8volatile uint8_t recv_index = 0; 9volatile uint8_t send_index = 0;1011#define buff_size 6412uint8_t recv_buff[buff_size] = {0};1314int main(void)15{16 ...1718 while (1)19 {2021 if(recv_index != send_index){ 2223 if(send_index 2) {16 return -1;17 }18 while (*ptr && (i < len)) {19 usart_send_blocking(usart1, *ptr);20 if (*ptr == '\\n') {21 usart_send_blocking(usart1, '\\r');22 }23 i++;24 ptr++;25 }26 return i;27}现在就可以直接使用printf函数进行打印显示到串口设备。
小米mix2评测;小米mix2怎么样?来看看网友们怎么说:颜值高、配置强
思瑞浦推出最新拥有完整独立知识产权的两款CAN收发器芯片
RDA6205芯片基本信息介绍
国密应用芯片推荐
无人机融合人工智能可以得到什么好处
STM32G0开发笔记:串口中断的使用
三大运营商开展全国范围的5G中低频段试验
5G时代底层存储技术将变革
中兴通讯5G系列产品全面升级
爱普特推出15W无线单线圈单充方案 亚略特获21标杆案例5项大奖
360N5S最新消息:360N5S不仅能分屏双开,而且还能保持流畅不卡顿
基于DTMF的医院护理呼叫对讲系统
瘦肉精快速检测仪的产品性能是怎样的
瑞萨移动将展示高性能LTE平台
AMD把高性能带入了嵌入式平台
新型智能健康传感器,实现更专业和便携的健康管理
利用Xilinx UltraScale架构大幅提升生产力
简易加热器制作
光电液位开关LLT200D3SH的特点优势及在脱水机中的应用
如何设计用于无人机电机控制的ESC模块