|
之前买的STM32F0Discovery开发板一直没用,前几天才开始折腾,记录下第一个工程吧。 玩过STM32F10xx,发现F0开发方式和F1很接近,F1很多代码稍作修改便可移植到F0上。 基于IAR7.1建立工程。 、、串口初始化 void Usart_Config(uint16_t Usart_BaudRate) { NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); //enable clock of GPIOA RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //enable clock of USART1 /* Configure USART Tx as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1);//PA9 as Usart1_TX GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_1);//PA10 as Usart1_RX USART_InitStructure.USART_BaudRate = Usart_BaudRate; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_Init(USART1,&USART_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); #if USART_RXNE_INTERRUPT USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); #endif USART_Cmd(USART1, ENABLE);//enable USART1 #if USART_TC_INTERRUPT USART_ClearFlag(USART1,USART_FLAG_TC); USART_ITConfig(USART1,USART_IT_TC,ENABLE); #endif } 在做GPIO复用功能映射的时候,第二个参数不要习惯性的写成GPIO_Pin_9,红色部分代码 为方便代码裁剪,使用宏定义来控制。因为使能中断的时候会自动发送一个空闲帧,TC中断标志位会置位,所以TC中断开启的操作应当放在串口使能操作之后,并且开启TC中断之前应当清除一次TC中断标志位,否则一旦串口初始化完毕,就会进入TC中断。如上蓝色部分代码。 、、发送字节 void Usart_TxByte(uint8_t dat) { USART_SendData(USART1,dat); while (USART_GetFlagStatus(USART1, USART_FLAG_TC) != SET);//wait untill transmitt complete } 、、发送字符串 void Usart_TxString(uint8_t *string) { while(*string != '\0') Usart_TxByte(*string++); } 、、中断服务函数 <span style="font-size: small;">void USART1_IRQHandler(void) { static uint8_t n = 0; if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)) //ORE interrupt USART1->ICR |= 1 |
01--USART.rar
下载300.04 KB, 下载次数: 528
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版
RE:【原创】STM32F0第一个工程,LED/串口收发中断
RE:【原创】STM32F0第一个工程,LED/串口收发中断
RE:【原创】STM32F0第一个工程,LED/串口收发中断
RE:【原创】STM32F0第一个工程,LED/串口收发中断
RE:【原创】STM32F0第一个工程,LED/串口收发中断
回复:【原创】STM32F0第一个工程,LED/串口收发中断
支持!
第一次在论坛发帖,感谢管理员支持
回复:【原创】STM32F0第一个工程,LED/串口收发中断
回复:【原创】STM32F0第一个工程,LED/串口收发中断
回复:【原创】STM32F0第一个工程,LED/串口收发中断