本帖最后由 北方 于 2019-5-13 12:49 编辑
1. ST的SDK提供了比较丰富的例程,不过双核使用的例程还没补充,应该在后面升级版补充,现在是1.0版本。2. 跳过电灯,直接从蓝牙例程开始测试。
蓝牙心率测量使用的是ble低功耗蓝牙,先下载手机app
ST BLE Profile application on the android device
https://play.google.com/store/ap ... hlevalidation&hl=en
https://itunes.apple.com/fr/App/st-ble-profile/id1081331769?mt=8
然后编译例程,并下载到板卡,就可以了。
这个例程使用的是CM4内核,写入的地址如下图,正如内存分布图所示。
3. 主要的程序如下,
- int main(void)
- {
- /* USER CODE BEGIN 1 */
- /* USER CODE END 1 */
- /* MCU Configuration--------------------------------------------------------*/
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
- HAL_Init();
- /* USER CODE BEGIN Init */
- Reset_Device();
- Config_HSE();
- /* USER CODE END Init */
- /* Configure the system clock */
- SystemClock_Config();
- /* USER CODE BEGIN SysInit */
- PeriphClock_Config();
- Init_Exti(); /**< Configure the system Power Mode */
- /* USER CODE END SysInit */
- /* Initialize all configured peripherals */
- MX_GPIO_Init();
- MX_DMA_Init();
- MX_RF_Init();
- MX_RTC_Init();
- /* USER CODE BEGIN 2 */
- /* USER CODE END 2 */
- APPE_Init();
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while(1)
- {
- SCH_Run(~0);
- /* USER CODE END WHILE */
- /* USER CODE BEGIN 3 */
- }
- /* USER CODE END 3 */
- }
复制代码
4. 范例解析4.1 程序启动,依次启动硬件库HAL_init(),系统时钟,中断设置,外设GPIO,DMA,RTC等常规设置,其中射频是主要的部分,在 MX_RF_Init()完成。
4.2 具体和程序有关的在App目录下的app_ble.c,dis_app.c,hrs_app.c。这3个程序就是定义了HeatRate的蓝牙service和对应的参数以及执行特征的程序。
4.3 整个程序是基于RTOS的,这些应用都在scheduler中定义并使用。
4.4 对应于程序编写,需要比较清除蓝牙原理,让rtos的时序和逻辑,然后的代码就相当简单了。后面的详细内容在后面主观分析。
此内容由EEWORLD论坛网友北方原创,如需转载或用于商业用途需征得作者同意并注明出处