小编Han*_*oft的帖子

STM32 HAL USART通过中断接收

我在通过USART接收数据时遇到了一些麻烦。我实际上想要实现的目标是,我可以通过USART接收一个没有特定长度(只有最大可能长度)的命令。因此,我使用中断例程来检查收到的每个字符,但是我仍然无法实现我想要的功能。每当我收到一个新字符时,都会调用该例程,但是由于某种原因HAL_UART_Receive_IT(&huart1,rx_data,buff_size_rx)不能实时升级,因此当我检查rx_data [pointer]时看不到接收到的字符,但是稍后它在rx_data缓冲区中。

到目前为止,我有:

int pointer =0;

...

void USART1_IRQHandler(void)
{
  /* USER CODE BEGIN USART1_IRQn 0 */
    if ( USART1->ISR & UART_IT_TXE) {

    }

    if ( USART1->ISR & UART_IT_RXNE) {
        HAL_UART_Receive_IT(&huart1,rx_data,buff_size_rx);
        if(rx_data[pointer]=='\0') {
              pointer=0;
              readCommand(rx_data);
              clearBuffer(rx_data,buff_size_rx);
        } else {
          pointer++;
          if(pointer>=buff_size_rx) {
              pointer=0;
          }
        }
    }
    /* USER CODE END USART1_IRQn 0 */
    HAL_UART_IRQHandler(&huart1);
    /* USER CODE BEGIN USART1_IRQn 1 */



  /* USER CODE END USART1_IRQn 1 */
}
Run Code Online (Sandbox Code Playgroud)

hal stm32

5
推荐指数
2
解决办法
3万
查看次数

Remix Ethereum 合约去哪儿了?

当我在 remix.ethereum.org 下单击创建时,我不明白智能合约实际上去了哪里。例如,如果我选择 Injected Web3,这应该将合约发布到 ropsten 测试网,对吗?但是我怎样才能访问合同呢?当我使用 metamask 时,它会在我使用 web3.js 时为我注入正确的提供程序,但是如果我不想使用注入的 web3,而是在 web3.js 中手动选择提供程序地址,我现在如何找到此合同?我可以通过这种方式访问​​智能合约吗?

编辑:我不知道我的问题应该有什么问题。我真的没有发现如何在没有注入 web3 的情况下在 ropsten 测试网络中连接到智能合约。通常你在 web3.js 中这样做:

if (typeof web3 !== 'undefined') {
            web3 = new Web3(web3.currentProvider);
        } else {
            // set the provider you want from Web3.providers
            web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
        }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您没有注入的 web3,那么您可以使用 localhost。但是我无法连接到智能合约,因为它不知道我实际上在哪个网络中发布了智能合约,对吗?

ethereum web3js remix

3
推荐指数
1
解决办法
1344
查看次数

标签 统计

ethereum ×1

hal ×1

remix ×1

stm32 ×1

web3js ×1