打印
[STM32F0]

接收PC端发送的数据

[复制链接]
楼主: yszong
手机看帖
扫描二维码
随时随地手机跟帖
21
zhanghqi| | 2017-9-24 23:13 | 只看该作者 回帖奖励 |倒序浏览

中断处理函数应该放在哪里让他调用

使用特权

评论回复
22
zhenykun| | 2017-9-24 23:15 | 只看该作者

放在类似"stm32f10x_it.c"文件中,同时在头文件(类似"stm32f10x_it.h")中申明。

使用特权

评论回复
23
wyjie| | 2017-9-24 23:16 | 只看该作者
重点是申明,可以在头文件中“void USART2_IRQHandler (void);”,或者在源文件中“extern void USART2_IRQHandler (void);”来获取。只要编译器能够找到,其他的不重要!

使用特权

评论回复
24
yszong|  楼主 | 2017-9-24 23:17 | 只看该作者
这个和.s文件里的有关吗

使用特权

评论回复
25
jlyuan| | 2017-9-24 23:19 | 只看该作者

引申一下:在以后, 你也可以通过修改引导文件(类似startup_stm32f10x_hd.s),来使用自己的命名方式。

使用特权

评论回复
26
yszong|  楼主 | 2017-9-24 23:21 | 只看该作者

主要就是我这边板子可以接收到了,但是我发现我定义的中断没调用,是不是和.s文件里的那个什么入口有关?

使用特权

评论回复
27
dengdc| | 2017-9-24 23:22 | 只看该作者

通过修改引导文件中的 所有的 USART2_IRQHandler 函数名称  ,替换成你自己想要的命名。

使用特权

评论回复
28
heweibig| | 2017-9-24 23:26 | 只看该作者

对,进行平台移植或者移植实时系统的时候,会用到。

使用特权

评论回复
29
wuhany| | 2017-9-24 23:27 | 只看该作者
一般新建工程不会改到引导文件的 .s,你不放心的话,就打开看看引导文件有没有被改。

使用特权

评论回复
30
jiahy| | 2017-9-24 23:29 | 只看该作者
以前写的,仅供参考:
/**
  * @brief  UartInitial
  * @param  None
  * @retval None
  */
static        void        UartInitial(void)
{
                USART_InitTypeDef USART_InitStructure;
                NVIC_InitTypeDef NVIC_InitStructure;
                GPIO_InitTypeDef GPIO_InitStructure;
               
                /* Enable GPIO clock */
                RCC_AHBPeriphClockCmd(USARTx_TX_GPIO_CLK | USARTx_RX_GPIO_CLK, ENABLE);  
                /* Enable USART clock */
                USARTx_APBPERIPHCLOCK(USARTx_CLK, ENABLE);
               
                /* Connect PXx to USARTx_Tx */
                GPIO_PinAFConfig(USARTx_TX_GPIO_PORT, USARTx_TX_SOURCE, USARTx_TX_AF);
               
                /* Connect PXx to USARTx_Rx */
                GPIO_PinAFConfig(USARTx_RX_GPIO_PORT, USARTx_RX_SOURCE, USARTx_RX_AF);
               
                /* Configure USART Tx and Rx as alternate function push-pull */
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3;
                GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
                GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
                GPIO_InitStructure.GPIO_Pin = USARTx_TX_PIN;
                GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStructure);
               
                GPIO_InitStructure.GPIO_Pin = USARTx_RX_PIN;
                GPIO_Init(USARTx_RX_GPIO_PORT, &GPIO_InitStructure);
                        
                USART_DeInit(USART1);
               
                /* USARTx configured as follow:
                                        - BaudRate = 115200 baud  
                                        - Word Length = 8 Bits
                                        - One Stop Bit
                                        - No parity
                                        - Hardware flow control disabled (RTS and CTS signals)
                                        - Receive and transmit enabled
                */
                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);        
               
                USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
                /* NVIC configuration */
                /* Enable the USARTx Interrupt */
                NVIC_InitStructure.NVIC_IRQChannel = USARTx_IRQn;
                NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
                NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
                NVIC_Init(&NVIC_InitStructure);
               
                USART_Cmd(USART1,ENABLE);
}

使用特权

评论回复
31
liliang9554| | 2017-9-24 23:30 | 只看该作者

直接通过USB口不行的,调试器没有和串口连接,这个系列都是这样

使用特权

评论回复
32
shimx| | 2017-9-24 23:32 | 只看该作者

void Modbus_IRQHandler(void)
{
        if (USART_GetITStatus(cCOM1, USART_IT_RXNE) == SET)
        {
                USART_ClearITPendingBit(cCOM1, USART_IT_RXNE);
                prvvUARTRxISR();
        }
        if (USART_GetITStatus(cCOM1, USART_IT_TXE) == SET)
        {
                USART_ClearITPendingBit(cCOM1, USART_IT_TXE);
                prvvUARTTxReadyISR();
        }
}

使用特权

评论回复
33
yszong|  楼主 | 2017-9-24 23:33 | 只看该作者
我想错了,开始的时候我的已经可以接受了,但我发现我定义的中断处理函数没地调用

使用特权

评论回复
34
shimx| | 2017-9-24 23:34 | 只看该作者

你的映射使能了吗?

使用特权

评论回复
35
jiaxw| | 2017-9-24 23:36 | 只看该作者
觉得解决这类问题还是仔细看看规格书、应用笔记以及例程得好

使用特权

评论回复
36
spark周| | 2017-9-24 23:38 | 只看该作者
USART2_InitStruct结构体需要配置一下

使用特权

评论回复
37
yszong|  楼主 | 2017-9-24 23:39 | 只看该作者
其实还是不大明白,我再琢磨琢磨吧,多谢了哈,结贴了先

使用特权

评论回复
38
Varus| | 2017-9-25 09:48 | 只看该作者
初学STM32Cube工具的使用,有没有好的教程

使用特权

评论回复
39
Mattheww| | 2017-9-26 10:14 | 只看该作者
中断未使能???

使用特权

评论回复
40
Brand2| | 2017-9-26 18:41 | 只看该作者
连串口的参数都没设置,怎么能够通讯的起来

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则