影院场景,我找科技完成数千万元Pre-A轮融资
06-18
最近升级MDK到V5.25,发现Managing Run-Time Environment中有很多库。
比以前好多了。
从底层驱动到上层协议栈,有常用的,也有不太常用的。
我发现ARM加快了这个系统的更新速度,感觉有必要学习一下。
从驱动开始学习,首先学习USART API。

详细介绍参见CMSIS驱动USART API USART将接收到的数据发送给程序 /** ************* ******** ****************************************************** ************ * @file main.c * @作者 XinLi * @版本 v1.0 * @日期 20-3 月- * @brief 主程序主体。
**************************************** ** ************************************************** * @注意 * *版权所有? * 自由软件基金会,许可证的第 3 版,或 *(由您选择)任何更高版本。
* * 分发此程序是为了希望它有用, * 但不提供任何保证;甚至没有 的默示保证* 适销性或特定用途的适用性。
有关更多详细信息,请参阅 * GNU 通用公共许可证。
* * 您应该随本程序一起收到 GNU 通用公共许可证 * 的副本。
如果没有,请参阅 . * **************************************** ****************************************** */ /*标头包括------------------------------------------------ -----------*/ #include "stm32f4xx.h" #include "Driver_USART.h" #include /* 宏定义 ----- -------------------------------------------------- --*/ /* 类型定义 ------------------------------------------ -------------------*/ /* 变量声明 ---------------------- -------------------------------*/ extern ARM_DRIVER_USART Driver_USART1; /* 变量定义 --- -------------------------------------------------- -*/ static uint8_t rxBuffer[] = {0}; static uint8_t txBuffer[] = {0}; /* 函数声明 ---------------------------------------------- -------*/ static void USART1_Callback(uint32_t event); static void SystemClock_Config(void); /* 函数定义 ------------- ------------------------------------------------------*/ /** * @brief 主程序。
* @param None。
* @return None。
*/ int main(void) { /* STM32F4xx HAL 库初始化: - 配置闪存预取、指令和数据缓存 - 将 Systick 配置为每 1 毫秒生成一个中断 - 将 NVIC 组优先级设置为 4 - 全局 MSP(MCU 支持包)初始化 */ HAL_Init(); /* 配置系统时钟为 MHz */ SystemClock_Config(); Driver_USART1.Initialize(USART1_Callback); Driver_USART1.PowerControl(ARM_POWER_FULL ); Driver_USART1.Control(ARM_USART_MODE_ASYNCHRONOUS | ARM_USART_DATA_BITS_8 | ARM_USART_PARITY_NONE | ARM_USART_STOP_BITS_1 | ARM_USART_FLOW_CONTROL_NONE, 0 0); Driver_USART1.Control(ARM_USART_CONTROL_TX, 1); Driver_USART1.Control(ARM_USART_CONTROL_RX, 1); Driver_USART1.Receive(rxBuffer, sizeof(rxBuffer)); for(;;) { } } /** * @brief USART1 回调函数。
* @param event: USART 事件通知掩码。
* @return None。
*/ static void USART1_Callback(uint32_t event) { if(event & ARM_USART_EVENT_RX_TIMEOUT) { Driver_USART1.Control(ARM_USART_ABORT_RECEIVE, 1); uint32_t 长度 = Driver_US ART1.GetRxCount(); memcpy(txBuffer, rxBuffer, 长度); Driver_USART1.Send(txBuffer, 长度); Driver_USART1.接收(rxBuffer, sizeof(rxBuffer)); } } / ** * @brief 系统时钟配置 * 系统时钟配置如下: * 系统时钟源 = PLL (HSE) * SYSCLK(Hz) = 0 * HCLK (Hz) = 0 * AHB 预分频器 = 1 * APB1 预分频器 = 4 * APB2 预分频器 = 2 * HSE 频率(Hz) = * PLL_M = 8 * PLL_N = * PLL_P = 2 * PLL_Q = 7 * VDD(V) = 3.3 * 主稳压器输出电压 = Scale1 模式 * 闪存延迟 (WS) = 5 * @param None * @retval None */ static void SystemClock_Config(void) { RCC_ClkInitTypeDef RCC_ClkInitStruct; RCC_OscInitTypeDef RCC_OscInitStruct; /* 启用电源控制时钟 */ __HAL_RCC_PWR_CLK_ENABLE(); /* 电压缩放可优化器件运行时的功耗 时钟如下最大系统频率,更新电压缩放值 有关系统频率,请参阅产品数据表。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-17
06-18
06-18
06-17
06-21
最新文章
使用电子管有哪些注意事项?如何检查电子管之间是否短路?
博通支付1200万美元和解SEC财务欺诈指控
八名运营商高管确认加入虚拟运营商
内蒙古农牧区雷电灾害成因分析及防雷对策
北京联通将5G应用于世园会远程医疗急救
TD-SCDMA最后一轮冲刺测试启动,产业前景更加光明
专访阿里云总裁王健:云计算服务平台梦想成真
USB2.0控制器CY7C68013的接口设计与实现