完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这是main程序
#include "STM32f10x.h" #include "bsp_usart1.h" #include "bsp_led.h" int main(void) { LED_GPIO_Config(); USART1_Config(); NVIC_Configuration(); while(1) { char ch; if(ch=='A') { LED1(ON); } else if(ch=='B') { LED1(OFF); } } } 这是bsp.usart.c程序 #include "bsp_usart1.h" /** * @brief USART1 GPIO ÅäÖÃ,¹¤×÷ģʽÅäÖá£9600 8-N-1 * @param ÎÞ * @retval ÎÞ */ void USART1_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; /* config USART1 clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); /* USART1 GPIO config */ /* Configure USART1 Tx (PA.09) as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure USART1 Rx (PA.10) as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); /* USART1 mode config */ USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No ; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); /* ʹÄÜ´®¿Ú1½ÓÊÕÖÐ¶Ï */ USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); // USART_ITConfig(USART1, USART_IT_TXE, ENABLE); USART_Cmd(USART1, ENABLE); } /// ÅäÖÃUSART1½ÓÊÕÖÐ¶Ï void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; /* Configure the NVIC Preemption Priority Bits */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); /* Enable the USARTy Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } /****************** ÖжϷþÎñ³ÌÐò *****************/ void USART1_IRQHandler(void) { uint8_t ch; if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { ch = USART_ReceiveData(USART1); printf( "rn%02xrn", ch ); //printf·¢ËÍ·½Ê½ USART_SendData(USART1,ch); //32¿âº¯Êý·¢ËÍ·½Ê½ while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET); USART_ClearFlag(USART1,USART_FLAG_TC); } } /****************** ¿ÉÒÔ·¢ËÍÒ»¸ö×Ö·û´® *******************/ void USART1_Send_s(u8 *ch) { while(*ch) { USART_SendData(USART1,*ch); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET); USART_ClearFlag(USART1,USART_FLAG_TC); } } /// Öض¨Ïòc¿âº¯Êýprintfµ½USART1 int fputc(int ch, FILE *f) { /* ·¢ËÍÒ»¸ö×Ö½ÚÊý¾Ýµ½USART1 */ USART_SendData(USART1, (uint8_t) ch); /* µÈ´ý·¢ËÍÍê±Ï */ while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); return (ch); } /// Öض¨Ïòc¿âº¯Êýscanfµ½USART1 int fgetc(FILE *f) { /* µÈ´ý´®¿Ú1ÊäÈëÊý¾Ý */ while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET); return (int)USART_ReceiveData(USART1); } 本人菜鸟,求大神指导 |
|
相关推荐
35个回答
|
|
|
|
|
|
FRAN2016 发表于 2019-3-28 14:58 好的,谢谢!我改改试试 |
|
|
|
|
|
|
|
ch这个变量定义
|
|
|
|
就是在主函数中去掉与LED1无关的语句,再用LED1(ON);如果亮(也可能是LED1(OFF);视硬件的接法),则说明对LED1的控制是有效的,问题是处在其他方面。 |
|
|
|
|
|
|
|
确实ch变量一直没赋值,肯定没有作用
|
|
|
|
|
|
把main函数里面的ch设为全局,并加上volatile char ch, 然后把串口中断中的ch屏蔽掉,在试试
|
|
|
|
|
|
|
|
wangyuzi87 发表于 2019-3-28 18:30 好的,非常感谢 |
|
|
|
我把ch改为全局变量了,灯亮了,但是进入死循环出不来,只有复位后发送B才能灭,否则一直亮着 |
|
|
|
是的,我改成全局变量了,灯亮了,但是进入死循环出不来,灯会一直亮,复位后发送B灯才能灭 |
|
|
|
嗯,谢谢 |
|
|
|
你先弄个最简单的程序,看看能不能点亮?
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1187 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1122 浏览 2 评论
2223 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1311 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1735 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 02:21 , Processed in 0.852884 second(s), Total 73, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号