你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

uncleo-f030r8的usart通信

[复制链接]
wu93111 提问时间:2015-11-12 15:27 /
第一次接触,我就想通过usart发送一个最简单的0x5555,不管怎么弄都不行,求救,下边是能做到的最多的了,附件是官网下的小例程,求各位大神相助


111.jpg
222.jpg

NUCLEO-F030R8.zip

下载

4.26 MB, 下载次数: 5, 下载积分: ST金币 -1

收藏 评论15 发布时间:2015-11-12 15:27

举报

15个回答
wu93111 回答时间:2015-11-12 15:28:26
那个大哥有时间帮我改一下,谢谢
wu93111 回答时间:2015-11-12 15:40:31
单步走到这不走了
33.jpg
wu93111 回答时间:2015-11-12 16:10:44
同上面的走到main的这就不行了
44.jpg
废鱼 回答时间:2015-11-12 16:28:17
IO口TX设置为输出,
/* Configure USART Tx as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = COM_TX_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(COM_TX_PORT, &GPIO_InitStructure);

/* Configure USART Rx as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = COM_RX_PIN;
GPIO_Init(COM_RX_PORT, &GPIO_InitStructure);

IO配置为串口功能。

/* Connect PXx to USARTx_Tx */
GPIO_PinAFConfig(GPIOx,GPIO_PinSource,GPIO_AF_1);
/* Connect PXx to USARTx_Rx */
GPIO_PinAFConfig(GPIOx,GPIO_PinSource,GPIO_AF_1);
wu93111 回答时间:2015-11-12 17:15:25
安 发表于 2015-11-12 16:28
IO口TX设置为输出,
/* Configure USART Tx as alternate function push-pull */
GPIO_InitStructure.GPIO_ ...

这怎么改啊,和我上面写的不是一样的吗
埃斯提爱慕 回答时间:2015-11-12 20:34:57
提示: 作者被禁止或删除 内容自动屏蔽
wu93111 回答时间:2015-11-12 20:44:39

谢谢了,帮解决一下呗
废鱼 回答时间:2015-11-13 08:52:26
TX是输出,RX是输入。不一样的配置。
wu93111 回答时间:2015-11-13 16:59:11
安 发表于 2015-11-13 08:52
TX是输出,RX是输入。不一样的配置。

我知道问题在哪了,因为我在配置时钟的时候应该选择APB1,如果我想要通过pc端的串口工具往板子里写东西,大体的做法可否指点一下,谢谢
废鱼 回答时间:2015-11-14 08:50:15
查询接收,中断接收两种方式。
wu93111 回答时间:2015-11-17 11:06:35
安 发表于 2015-11-14 08:50
查询接收,中断接收两种方式。

我写的差不多,可是接收不到,在NVIC那里有点问题,我从网上找的,但是会报错,我对报错的几个区自己定义也不行,唉,大哥帮我看一下把,我的usart是有的,直接用的usart.c的,就没再main这写
  #include "main.h"
static __IO uint32_t TimingDelay;
uint8_t __IO BlinkSpeed = 0;
/* Private function prototypes -----------------------------------------------*/
RCC_ClocksTypeDef RCC_Clocks;
USART_InitTypeDef USART2_InitStruct;
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;

void USART2_IRQHandler (void)//
{
        if (USART_GetFlagStatus(USART2,USART_FLAG_RXNE) ==SET)
                {
                 USART_SendData(USART2,USART_ReceiveData(USART2));
                 while (!USART_GetFlagStatus(USART2,USART_FLAG_TC));
                }
        USART_ClearITPendingBit(USART2,USART_IT_RXNE);//Öжϱê־λ
}

int main(void)
{
  /*!< At this stage the microcontroller clock setting is already configured,
       this is done through SystemInit() function which is called from startup
       file (startup_stm32f030.s) before to branch to application main.
       To reconfigure the default setting of SystemInit() function, refer to
       system_stm32f0xx.c file
     */
  
  /* SysTick end of count event each 1ms */
  RCC_GetClocksFreq(&RCC_Clocks);
  SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000);
  
  /* Initialize LED2 */
  STM_EVAL_LEDInit(LED2);
  
  /* Initialize User_Button on STM32NUCLEO */
  STM_EVAL_PBInit(BUTTON_USER, BUTTON_MODE_EXTI);   
  
  /* Initiate Blink Speed variable */
  BlinkSpeed = 0;
  USART_StructInit(&USART2_InitStruct);
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_InitStructure.GPIO_Pin = GPIO_Pin_2;
  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_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//
GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_1);
  GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_1);
//nvic
  //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  //NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelPriority= 0x03;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   
  NVIC_Init(&NVIC_InitStructure);

USART_DeInit(USART2);
USART_Init(USART2, &USART2_InitStruct);
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
USART_ClearFlag (USART2,USART_FLAG_TC);
USART_Cmd(USART2, ENABLE);
  /* Infinite loop */
  while (1)
  {
    /* Test on blink speed */
    if(BlinkSpeed == 0)
    {
      /*LED2 Toggle each 50ms*/
      STM_EVAL_LEDToggle(LED2);
      Delay(50);      
    }      
    else if(BlinkSpeed == 1)
    {
      STM_EVAL_LEDToggle(LED2);
      /*LED2 Toggle each 200ms */
      Delay(200);
    }
  
  //USART_SendData(USART2, 0x5555);
  }
}
/**
* @brief  Inserts a delay time.
* @param  nTime: specifies the delay time length, in 1 ms.
* @retval None
*/
void Delay(__IO uint32_t nTime)
{
  TimingDelay = nTime;
  
  while(TimingDelay != 0);
}
/**
* @brief  Decrements the TimingDelay variable.
* @param  None
* @retval None
*/
void TimingDelay_Decrement(void)
{
  if (TimingDelay != 0x00)
  {
    TimingDelay--;
  }
}
#ifdef  USE_FULL_ASSERT
/**
* @brief  Reports the name of the source file and the source line number
*         where the assert_param error has occurred.
* @param  file: pointer to the source file name
* @param  line: assert_param error line source number
* @retval None
*/
void assert_failed(uint8_t* file, uint32_t line)
{
  /* User can add his own implementation to report the file name and line number,
  ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  
  /* Infinite loop */
  while (1)
  {
  }
}
#endif
/**
* @}
*/

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

废鱼 回答时间:2015-11-17 14:47:17
wu93111 回答时间:2015-11-17 15:31:23
安 发表于 2015-11-17 14:47
下面地址下载例程:
https://www.stmcu.org.cn/document/list/index/category-550

我现在通过串口工具发送可以在接收到,可是我突然发现我定义的USART2_IRQHandler压根就没地方调用,那为什么可以通呢
废鱼 回答时间:2015-11-17 15:44:59
看一下.S文件中,用的是哪个入口函数,如果用的是HAL库,中断函数在usart.c里面,HAL_USART_IRQHandler。
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版