当前位置: 首页 > wzjs >正文

做网站挂靠服务器怎么在百度推广自己的网站

做网站挂靠服务器,怎么在百度推广自己的网站,c2c模式的典型网站,佛山顺德网站建设公司code repo: 访问gitee 上节课成功点亮了LED,这次来把usart 用起来,毕竟有交互才是系统。 技术准备 首先查看手册,发现mcu有1个usart和1个 lpuart。 usart 的使用需要两个pin,一个接收一个发送。继续查看pin and ball definition…

code repo: 访问gitee
上节课成功点亮了LED,这次来把usart 用起来,毕竟有交互才是系统。

技术准备

首先查看手册,发现mcu有1个usart和1个 lpuart。
usart 的使用需要两个pin,一个接收一个发送。继续查看pin and ball definitions, 寻找使用usart可用的pin,发现可选择PA9+PA10 或者 PB6+PB7。
通过原理图发现,如果使用PA9+PA10组合,需要单独接线。而根据圈出的数字顺序号,发现PB7,PB6通过转换连接到了st-link usb接口的DM和DP,因此使用stlink的虚拟串口功能。
在这里插入图片描述

查看memory mapping, 得到USART的寻址为:AHB1 --> APB2 --> USART1.
在这里插入图片描述
查看时钟树,usart 的clock source有4个选择,分别是PCLKn, SYSCLK, HSI16, LSE.
在这里插入图片描述
除此之外,还应当了解有哪些寄存器,以及各个寄存器的作用和意义。但开发优先,可以调用api来开发,多数api都是自注释的。所以可以等到需要的时候再查询寄存器。

代码实现

在main函数中,首先定义一个usart 变量,方便配置usart相关参数,然后新增一个usart初始化函数,并在main中进行调用。初始化函数中定义了串口的配置,波特率,长度等等。

UART_HandleTypeDef huart1;void USART1_UART_Init(void)
{/* USER CODE END USART1_Init 1 */huart1.Instance = USART1;huart1.Init.BaudRate = 115200;huart1.Init.WordLength = UART_WORDLENGTH_8B;huart1.Init.StopBits = UART_STOPBITS_1;huart1.Init.Parity = UART_PARITY_NONE;huart1.Init.Mode = UART_MODE_TX_RX;huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;huart1.Init.OverSampling = UART_OVERSAMPLING_16;huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;if (HAL_UART_Init(&huart1) != HAL_OK){Error_Handler();}if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK){Error_Handler();}if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK){Error_Handler();}if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK){Error_Handler();}
}

还要实现一个HAL_UART_MspInit 接口,该接口是usart初始化的回调接口,用于设置用于usart功能的pin,使能gpio和usart的时钟

void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
{GPIO_InitTypeDef GPIO_InitStruct = {0};RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};if(uartHandle->Instance==USART1){/** Initializes the peripherals clock*/PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART1;PeriphClkInitStruct.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK){Error_Handler();}/* USART1 clock enable */__HAL_RCC_USART1_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();/**USART1 GPIO ConfigurationPB6     ------> USART1_TXPB7     ------> USART1_RX*/GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;GPIO_InitStruct.Pull = GPIO_PULLUP;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;GPIO_InitStruct.Alternate = GPIO_AF7_USART1;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);}
}

最后实现一个fputc

int fputc(int ch, FILE *f)
{uint8_t data = (uint8_t)ch;if (HAL_UART_Transmit(&huart1, &data, 1, 10) != HAL_OK) // Reduced timeout to 10ms{// Handle transmission errorError_Handler();}return ch;
}

这样我们就可以使用printf来输出了。但是别忘记了在工程设置里面使用lib库,如图所示。
在这里插入图片描述

bugfix:如果在main中调用printf仍旧没有输出,可以使用setvbuf设置标准输出流(stdout)的缓冲模式

setvbuf(stdout, NULL, _IONBF, 0);

效果如下:
在这里插入图片描述
code repo: 访问gitee
commit: 89cba38e2296
搞定收工

http://www.dtcms.com/wzjs/459541.html

相关文章:

  • 优秀建筑设计案例晋城seo
  • 网站流量用什么表示网站关键词提升
  • wordpress替换谷歌字体插件搜索引擎排名优化技术
  • 职高的电子商务主要学什么seo网站排名
  • 资讯网站做app关键词统计工具有哪些
  • wordpress 邀请链接seo网站内容优化
  • 凯里网站开发搜索引擎网络排名
  • 网站内链建设员工培训课程
  • 关于网站开发技术广州推广seo
  • 免费做公司网站营销型网站的分类不包含
  • 建设网站方案ppt域名大全
  • erp系统入门教程吉林刷关键词排名优化软件
  • 门户网站上的广告怎么做百度投放广告联系谁
  • wordpress双语模板优化网站做什么的
  • 海东电子商务网站建设seo泛目录培训
  • 作网站流程中国营销策划第一人
  • 知名网站建设怎么样关键词优化哪家好
  • 陕西专业做网站网站建立的步骤
  • 做医疗网站建设网络优化初学者难吗
  • 视频医疗平台网站开发seo这个行业怎么样
  • 中国wix网站制作公司上海百度推广代理商
  • 网站建设是 口号seo中国是什么
  • 洪湖网站建设发稿软文公司
  • 网站建设和程序开发哪个好东莞营销网站建设优化
  • 怎样才能访问没有备案的网站高端网站定制
  • 杭州下城区建设局网站如何进行搜索引擎营销
  • 北京网站建设+知乎属于网络营销特点的是
  • 网站关键词推广优化软文营销的成功案例
  • 建设工程教育网建设工程类的考试辅导网站徐州百度快照优化
  • 一般做音响的有哪些网站推广赚钱的软件排行