完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
int main(void)
{ delay_init(); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE); led_conf(); //中断管理 NVIC_uConfiguration(); //USART1和USART2初始化配置 //USART1_uConfiguration(); //9600,n,8,1 使能接收中断 USART2_uConfiguration(); //9600,n,8,1 使能接收中断 //_3485_ENABLE_CONFIG(); led_on(); delay_us(700); // 开中断标志位 while(1) { // USART_SendData(USART1,String); USART_SendData(USART2,String); delay_ms(3000); } } void USART2_uConfiguration(void) { GPIO_InitTypeDef GPIO_uInitStructure,GPIO_uInitStr; USART_InitTypeDef USART_uInitStructure; // USART2_TX -> PA2 // USART2_RX -> PA3 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_1); GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_1); GPIO_uInitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_uInitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_uInitStructure.GPIO_OType = GPIO_OType_OD; GPIO_uInitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_uInitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 50M GPIO_Init(GPIOA,&GPIO_uInitStructure); GPIO_uInitStr.GPIO_Pin = GPIO_Pin_3; GPIO_uInitStr.GPIO_Mode = GPIO_Mode_AF; GPIO_uInitStr.GPIO_OType = GPIO_OType_OD; GPIO_uInitStr.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_uInitStr.GPIO_Speed = GPIO_Speed_50MHz; // 50M GPIO_Init(GPIOA,&GPIO_uInitStr); USART_uInitStructure.USART_BaudRate = 9600; USART_uInitStructure.USART_Parity = USART_Parity_No; USART_uInitStructure.USART_StopBits = USART_StopBits_1; USART_uInitStructure.USART_WordLength = USART_WordLength_8b; USART_uInitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_uInitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_Init(USART2,&USART_uInitStructure); USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); USART_Cmd(USART2,ENABLE); } void NVIC_uConfiguration(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitTypeDef NVIC_InitStructure1; // NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; // NVIC_InitStructure.NVIC_IRQChannelPriority = 1; // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure1.NVIC_IRQChannel = USART2_IRQn; NVIC_InitStructure1.NVIC_IRQChannelPriority = 0; NVIC_InitStructure1.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure1); } void USART2_IRQHandler(void) { led_off(); if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET) { USART_ClearITPendingBit(USART2,USART_IT_RXNE); String=USART_ReceiveData(USART2); } } 主程序里一直发送0x55,串口调试助手也可以接到的,说明发送没问题。我在中断服务函数写了led_off(),如果中断,led灯会熄灭,可是使用串口调试助手发送数据led并没有熄灭,发送字符也没有改变 |
|
相关推荐
8个回答
|
|
|
大神们,帮忙看看。
|
|
|
|
|
|
|
|
|
|
|
|
我用的是stm32f030c8,好像没有这个函数。 |
|
|
|
|
|
改成
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; 试下呢 |
|
|
|
|
|
现在可以了,只是硬件上,PA3口虚焊谢谢大家
|
|
|
|
|
|
|
|
|
|
|
|
不是的,你说的那个函数是在M3和M4中会有用到,M0中的中断跟M3和M4不同,是没有优先级分组的,只有抢占优先级而没有子优先级之类的,所以没有该接口。 |
|
|
|
|
vywyefswer 发表于 2018-11-1 14:23 这个我还真不知道 学习了 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2797 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2403 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2276 浏览 0 评论
2388 浏览 1 评论
1637 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 20:29 , Processed in 0.848011 second(s), Total 86, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
5564